需要XML帮助
全部 我有一个以下格式的XML需要XML帮助,xml,xslt,Xml,Xslt,全部 我有一个以下格式的XML <a> <a1 id="1"/> <a1 id="2"/> <a1 id="3"/> <a1 id="4"/> <a1 id="5"/> </a> 现在,我想使用XSLT根据前两个节点的位置删除它们,并再次生成XML。因此,上面的输出应为以下XML: <a> <a1 id="3"/> <a1 id="4"/> <
<a>
<a1 id="1"/>
<a1 id="2"/>
<a1 id="3"/>
<a1 id="4"/>
<a1 id="5"/>
</a>
现在,我想使用XSLT根据前两个节点的位置删除它们,并再次生成XML。因此,上面的输出应为以下XML:
<a>
<a1 id="3"/>
<a1 id="4"/>
<a1 id="5"/>
</a>
我使用的代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="a1">
<a1>
<xsl:copy>
<xsl:value-of select="@id"/>
</xsl:copy>
</a1>
</xsl:template>
<xsl:template match="a1[position()<2]"></xsl:template>
</xsl:stylesheet>
但我得到的结果是
<a1> 2 </a1>
<a1> 3 </a1>
<a1> 4 </a1>
<a1> 5 </a1>
听起来您需要使用fn:position来处理的子元素。您可以使用一种称为标识模板的方法来非常轻松地完成此操作。这将是我示例中的第一个模板。只需要处理每个属性和节点。之后,您所要做的就是不使用空白模板处理任何位置小于3的a1节点 所以使用这个XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a1[position()<3]" />
</xsl:stylesheet>
在这个XML上
<a>
<a1 id="1"/>
<a1 id="2"/>
<a1 id="3"/>
<a1 id="4"/>
<a1 id="5"/>
</a>
生成此输出
<a>
<a1 id="3"/>
<a1 id="4"/>
<a1 id="5"/>
</a>
你需要说出你在做什么。你在写代码吗?什么语言?在你的问题中包含代码。我想通过XSLT代码编辑这个问题,希望帮助你总是能得到更好的答案,如果你首先向我们提供你已经尝试过的内容以及它不起作用的原因。这里的大多数人不会免费做你的工作。因此,基本上我编写了以下代码:a1/a1,但预期的输出是:2 3 4 5如何获得“a”父节点?我得到的输出是2 3 4 5,非常感谢!!