我有以下xml
<?xml version="1.0"?>
<root>
<element>
<prop>
<value>1</value>
</prop>
<prop>
<value>1</value>
</prop>
<prop>
<value>2</value>
</prop>
</element>
</root>
如何在匹配中引用任何<prop>
元素?
我可以做类似
之类的事情<xsl:template match="element[prop[3][value != 2]]"/>
但我需要像
这样的东西 <xsl:template match="element[prop[ANY][value != 2]]"/>
UPD
示例:
<root>
<Product>
<somefield>123</somefield>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Some ID</IDTypeName>
<IDValue>964067</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Good</IDTypeName>
<IDValue>25</IDValue>
</ProductIdentifier>
</Product>
<Product>
<somefield>123</somefield>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Some ID</IDTypeName>
<IDValue>964067</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Good</IDTypeName>
<IDValue>11</IDValue>
</ProductIdentifier>
</Product>
<Product>
<somefield>123</somefield>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Some ID</IDTypeName>
<IDValue>964067</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Good</IDTypeName>
<IDValue>26</IDValue>
</ProductIdentifier>
</Product>
</root>
可以看出,Product中的ProductIdentifier标签很少。我想在IDTypeName = Good
中获得IDValue = 25或IDValue = 26的产品所以结果xml将是
<root>
<Product>
<somefield>123</somefield>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Some ID</IDTypeName>
<IDValue>964067</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Good</IDTypeName>
<IDValue>25</IDValue>
</ProductIdentifier>
</Product>
<Product>
<somefield>123</somefield>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Some ID</IDTypeName>
<IDValue>964067</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>Good</IDTypeName>
<IDValue>26</IDValue>
</ProductIdentifier>
</Product>
</root>
答案 0 :(得分:1)
我想获得IDValue = 25或IDValue = 26 in的产品 IDTypeName =好
正如您在your other question中了解到的,最好从 indentity transform 模板开始,并排除不满足条件的节点:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Product[not(ProductIdentifier[(IDValue=25 or IDValue=26) and IDTypeName='Good'])]"/>
</xsl:stylesheet>