Sign Up
Search
Options
search
Chat
Help
News
Log in
Not Logged in
Home
»
Boards
»
Stylus Studio Developer Network
»
XSLT Help and Discussion
»
How do I copy and create new elements with different namespaces and the identity template
Conferences
Stylus Studio Feature Requests
(1192)
Stylus Studio Technical Forum
(14621)
Website Feedback
(249)
XSLT Help and Discussion
(7625)
How do I copy and create new e...
(1)
substring-before and sums
(3)
Parsing special characters in ...
(2)
Schema - Require attribute in ...
(2)
Edit existing XSL files when n...
(1)
How can I use one single XSLT ...
(2)
Default selection of value in ...
(1)
Problem with watermark in pdf ...
(1)
XSLT Parameter Values dialog n...
(3)
Value of File Name is not acce...
(10)
Need help with a complex table...
(1)
How to replace all nordic char...
(1)
XSLT java heap space error wit...
(1)
Table Overflow to next page
(1)
Using XSLT 2.0 to define custo...
(1)
"standalone" attribute and xs...
(1)
Standardizing IP addresses
(2)
Programmatically changing page...
(6)
Can Stylus generate XSLT if so...
(5)
Extraction based on NODE Name.
(2)
NO XSLT:WYSIWYG
(2)
Previous
[241-260]
[261-280]
[281-300]
Next
XQuery Help and Discussion
(2017)
Stylus Studio FAQs
(159)
Stylus Studio Code Samples & Utilities
(364)
Stylus Studio Announcements
(113)
Topic
top
Subject:
How do I copy and create new elements with different namespaces and the identity template
Author:
Dominic Edmonds
Date:
21 Jan 2010 09:04 AM
Hi folks,
I would like to insert new element 'posn' as a child of the 'field' elements into a tree variable 'testvar' which is in the 'myns' namespace.
Here is my XSL:
[code]
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:myns="example.com"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:output omit-xml-declaration="yes"/>
<xsl:variable name="testvar" xmlns="myns">
<fields attr1="attr text 1" attr2="attr text 2">
<field attr3="attr text 3">
<name>Field Name 1</name>
<desc>Field Desc 1</desc>
</field>
<field>
<name>Field Name 2</name>
<desc>Field Desc 2</desc>
</field>
<field>
<name>Field Name 3</name>
<desc>Field Desc 3</desc>
</field>
</fields>
</xsl:variable>
<xsl:variable name="newtestvar">
<xsl:apply-templates select="$testvar" mode="test"/>
</xsl:variable>
<xsl:template match="field" mode="test">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="test"/>
<xsl:element name="posn">
<xsl:value-of select="concat('Field posn ', position(), ' ?= ')"/>
<xsl:number/>
</xsl:element>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()" mode="test">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="test"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:sequence select="$newtestvar" />
</xsl:template>
</xsl:stylesheet>
[code]
This gives me:
[code]
<fields xmlns="myns" attr1="attr text 1" attr2="attr text 2">
<field attr3="attr text 3">
<name>Field Name 1</name>
<desc>Field Desc 1</desc>
</field>
<field>
<name>Field Name 2</name>
<desc>Field Desc 2</desc>
</field>
<field>
<name>Field Name 3</name>
<desc>Field Desc 3</desc>
</field>
</fields>
[code]
whereas I would like to see the 'posn' element thusly:
[code]
<fields xmlns="myns" attr1="attr text 1" attr2="attr text 2">
<field attr3="attr text 3">
<name>Field Name 1</name>
<desc>Field Desc 1</desc>
<desc>Field Posn 1</desc>
</field>
<field>
<name>Field Name 2</name>
<desc>Field Desc 2</desc>
<desc>Field Posn 2</desc>
</field>
<field>
<name>Field Name 3</name>
<desc>Field Desc 3</desc>
<desc>Field Posn 3</desc>
</field>
</fields>
[code]
I need to keep the 'myns' namespace and I am sure that the answer lies in something to do with namespaces and the identity template.
Powered by
Stylus Studio
, the world's leading
XML IDE
for
XML
,
XSLT
,
XQuery
,
XML Schema
,
DTD
,
XPath
,
WSDL
,
XHTML
,
SQL/XML
, and
XML Mapping
!
Go to Conference:
Select Conference
Stylus Studio Feature Requests
Stylus Studio Technical Forum
Website Feedback
XSLT Help and Discussion
XQuery Help and Discussion
Stylus Studio FAQs
Stylus Studio Code Samples & Utilities
Stylus Studio Announcements
go
Log In Options
Username:
Password:
Site Map
|
Privacy Policy
|
Terms of Use
|
Trademarks
Stylus Scoop XML Newsletter:
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.