Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - Copy certain nodes >Thread Next - Re: Copy certain nodes Re: Copy certain nodesTo: NULL Date: 10/1/2006 7:00:00 PM
This xslt stylesheet:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pNodeNames" select="'|size|mode|'"/>
<xsl:template match="file/*">
<xsl:if test="contains($pNodeNames, concat('|',name(),'|'))">
<xsl:call-template name="identity"/>
</xsl:if>
</xsl:template>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
when applied on your original xml source document:
<root>
<file name = "AAA">
<size>12</size>
<modified>2</modified>
<owner>Tom</owner>
<mode>read</mode>
</file>
<file name = "BBB">
<size>23</size>
<modified>6</modified>
<owner>Al</owner>
<mode>write</mode>
</file>
<file name = "CCC">
<size>15</size>
<modified>6</modified>
<owner>Jack</owner>
<mode>read</mode>
</file>
<file name = "DDD">
<size>12</size>
<modified>4</modified>
<owner>Jane</owner>
<mode>write</mode>
</file>
</root>
produces exactly the wanted result:
<root>
<file name="AAA">
<size>12</size>
<mode>read</mode>
</file>
<file name="BBB">
<size>23</size>
<mode>write</mode>
</file>
<file name="CCC">
<size>15</size>
<mode>read</mode>
</file>
<file name="DDD">
<size>12</size>
<mode>write</mode>
</file>
</root>
Hope this helped.
Cheers,
Dimitre Novatchev
"mark" <marekmb@g...> wrote in message
news:1159694500.390830.56950@b......
> Hi,
> Does anyone could help me to prepare xsl file which copies xml document
> with list of nodes as parameters
> Source xml file:
> <root>
> <file name = "AAA">
> <size>12</size>
> <modified>2</modified>
> <owner>Tom</owner>
> <mode>read</mode>
> </file>
> <file name = "BBB">
> <size>23</size>
> <modified>6</modified>
> <owner>Al</owner>
> <mode>write</mode>
> </file>
> <file name = "CCC">
> <size>15</size>
> <modified>6</modified>
> <owner>Jack</owner>
> <mode>read</mode>
> </file>
> <file name = "DDD">
> <size>12</size>
> <modified>4</modified>
> <owner>Jane</owner>
> <mode>write</mode>
> </file>
> </root>
> And I would like to get nodes with eg. <size> and <mode> subnodes:
>
> <root>
> <file name = "AAA">
> <size>12</size>
> <mode>read</mode>
> </file>
> <file name = "BBB">
> <size>23</size>
> <mode>write</mode>
> </file>
> <file name = "CCC">
> <size>15</size>
> <mode>read</mode>
> </file>
> <file name = "DDD">
> <size>12</size>
> <mode>write</mode>
> </file>
> </root>
> Any example of xsl would be appreciated
>
> Mark
>
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
