我有一个简单的xml:
<custom-objects>
<custom-object id="1">
<object-attribute attribute-id="address1">Warndtstr. 33</object-attribute>
<object-attribute attribute-id="branch">01</object-attribute>
<object-attribute attribute-id="catalogid">7991</object-attribute>
<object-attribute attribute-id="exportdate">2015-09-19</object-attribute>
</custom-object>
<custom-object>
...
</custom-object>
</custom-objects>
我正在尝试简单地复制每个< custom-object>包含子元素的元素,其中@ attribute-id是“exportdate”并具有特定的textvalue.
这是我的xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="custom-object[object-attribute[@attribute-id='exportdate']='2015-09-19']"/>
</xsl:stylesheet>
使用xpath时匹配正在运行. xslt返回一个空结果.
>为什么在这种情况下不起作用?
>我的错误在哪里?
最佳答案
“I’m trying to simply copy every element which contains a child where @attribute-id is “exportdate” and has a specific textvalue.”
应该用于删除元素的空模板.所以目前,你的XSL应该删除’exportdate’等于’2015-09-19’的自定义对象,并复制其他元素.如果您想要相反,请尝试使用具有相反含义的XPath,例如:
<xsl:template
match="custom-object[not(object-attribute[@attribute-id='exportdate']='2015-09-19')]"/>