Xml XSLT:仅复制某些节点
您能告诉我如何使用XSLT形成这个表单吗 输入:Xml XSLT:仅复制某些节点,xml,sorting,xslt,copy,filtering,Xml,Sorting,Xslt,Copy,Filtering,您能告诉我如何使用XSLT形成这个表单吗 输入: 输出: 即,复制所有内容,但如果是DD,则仅在EEE/@type=“foo”时复制,并按EEE/@value对所有DD进行排序 现在,我刚刚找到了xsl代码,它可以复制所有内容,并以EEE/@type为例进行排序 XSLT: 这已经足够好了,但我真的只想保留那些包含EEE/@type=foo的DD 非常感谢。请尝试使用xpath选择所需的节点 这应该只复制属性类型为foo的“EEE”元素 <xsl:template match=
输出:
即,复制所有内容,但如果是DD,则仅在EEE/@type=“foo”时复制,并按EEE/@value对所有DD进行排序
现在,我刚刚找到了xsl代码,它可以复制所有内容,并以EEE/@type为例进行排序
XSLT:
这已经足够好了,但我真的只想保留那些包含EEE/@type=foo的DD
非常感谢。请尝试使用xpath选择所需的节点 这应该只复制属性类型为foo的“EEE”元素
<xsl:template match="//EEE[@type='foo']">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
到
您只需要添加一个模板
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="EEE/@type" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="DD[not(EEE/@type = 'foo')]"/>
这确保了那些
DD
元素的EEE/@type
不等于'foo'
不会被复制。您可以发布您当前拥有的XSLT代码吗。希望它只是对代码的一个小调整,以检查相关的@type属性。谢谢完成了,蒂姆C!谢谢你的回复。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="EEE/@type" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="//EEE[@type='foo']">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="EEE/@type" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="EEE/@type" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="DD[not(EEE/@type = 'foo')]"/>