我有下面的输入,我写了一些xslt,给我一个具有特定ID的办公室,但是由于我得到了父节点,所以我也得到了标签<e>
。我的问题是我不想拥有那个<e>
标签。
<response>
<offices>
<e>
<id>33701</id>
<name>aa</name>
</e>
.....<e></e>
</offices>
</response>
<xsl:template match="*:response/offices">
<econ:GetOfficesResponse>
<Office>
<xsl:for-each select="e/id">
<xsl:if test="text() = $office_id">
<xsl:copy-of select="parent::node()"/>
</xsl:if>
</xsl:for-each>
</Office>
</econ:GetOfficesResponse>
</xsl:template>
</xsl:stylesheet>
我得到的答复:
<econ:GetOfficesResponse>
<Office>
<e>
<id>33701</id>
<name>...</name>
</e>
</Office>
我想要的答复:
<econ:GetOfficesResponse>
<Office>
<id>33701</id>
<name>...</name>
</Office>
有人可以帮我吗?使用xslt 2.0的I / m
答案 0 :(得分:0)
似乎您只需要一个xsl:for-each
即可代替您的<xsl:copy-of select="e[id = $office_id]/*"/>
答案 1 :(得分:0)
尝试此代码:
<xsl:template match="*:response/offices">
<econ:GetOfficesResponse>
<Office>
<xsl:for-each select="e/id">
<xsl:if test="text() = $office_id">
<xsl:copy-of select="parent::node()/child::node()"/>
</xsl:if>
</xsl:for-each>
</Office>
</econ:GetOfficesResponse>
</xsl:template>