我有这样的XML:
<Values>
<Value AttributeID="asset.extension">pdf</Value>
<Value AttributeID="asset.size">10326</Value>
<Value AttributeID="ATTR_AssetPush_Webshop">1</Value>
<Value AttributeID="asset.format">PDF (Portable Document Format application)</Value>
<Value AttributeID="asset.mime-type">application/pdf</Value>
<Value AttributeID="asset.filename">filename.pdf</Value>
<Value AttributeID="asset.uploaded">2018-01-10 17:05:39</Value>
<Value AttributeID="ATTR_Verwendungsort" Derived="true">WebShop,</Value>
</Values>
我有2个(或更多)这样的XPath表达式:
<xsl:template match="/STEP-ProductInformation/Assets/Asset/Values/Value[not(@AttributeID='asset.mime-type')]" />
<xsl:template match="/STEP-ProductInformation/Assets/Asset/Values/Value[not(@AttributeID='asset.size')]" />
但是由于某种原因,如果我将它们中的2个一起使用,则会删除所有信息。如果仅使用1个expressoin,则会得到所需的输出。我不能使用两个这样的表达式吗?
我也尝试过将它们像这样组合:
<xsl:template match="/STEP-ProductInformation/Assets/Asset/Values/Value[not(@AttributeID='asset.mime-type') and (@AttributeID='asset.size')]" />
但这也没有做到。
所需的输出如下:
<Values>
<Value AttributeID="asset.size">10326</Value>
<Value AttributeID="asset.mime-type">application/pdf</Value>
</Values>
答案 0 :(得分:1)
我认为您可以在XSLT 2/3中将其表示为
<xsl:template match="Values/Value[not(@AttributeID = ('asset.mime-type', 'asset.size'))]"/>
在XSLT / XPath 1.0中,您需要Values/Value[not(@AttributeID = 'asset.mime-type' or @AttributeID = 'asset.size')]
。
答案 1 :(得分:0)
<xsl:template match="/STEP-ProductInformation/Assets/Asset/Values /Value[not(@AttributeID='asset.mime-type')]" /> <xsl:template match="/STEP-ProductInformation/Assets/Asset/Values /Value[not(@AttributeID='asset.size')]" />
这是一个逻辑错误-与XPath无关。
这就像在说:
上面的第一条语句仅选择星期一。第二条语句从这些星期一中选择所有星期二,即空集。
正确的陈述:
从一周的所有天开始,我只会在星期一或星期二
工作