[英]Removing node when subnode meet a specific conditon
I'm trying to remove node from an xml file when the subnode "number" equals 0. Here what is look like. 当子节点“数字”等于0时,我试图从xml文件中删除该节点。这看起来像什么。
<deFac xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="baba_002.xsd">
<fact>
<refact>163620515-01</refact>
<date>2016-09-06</date>
<demfact>
<number>0</number>
<brut>81.46</brut>
<net>81.46</net>
</demfact>
</fact>
<fact>
<refact>163621197-02</refact>
<date>2016-09-06</date>
<demfact>
<number>11</number>
<brut>61.44</brut>
<net>61.44</net>
</demfact>
</fact>
<fact>
<refact>163621203-01</refact>
<date>2016-09-06</date>
<demfact>
<number>1</number>
<brut>4.55</brut>
<net>4.55</net>
</demfact>
</fact>
<fact>
<refact>163621198-01</refact>
<date>2016-09-06</date>
<demfact>
<number>0</number>
<brut>1.71</brut>
<net>1.71</net>
</demfact>
</fact>
</deFac>
What I want is that 我想要的是
<deFac xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="baba_002.xsd">
<fact>
<refact>163621197-02</refact>
<date>2016-09-06</date>
<demfact>
<number>11</number>
<brut>61.44</brut>
<net>61.44</net>
</demfact>
</fact>
<fact>
<refact>163621203-01</refact>
<date>2016-09-06</date>
<demfact>
<number>1</number>
<brut>4.55</brut>
<net>4.55</net>
</demfact>
</fact>
</deFac>
This the xslt that I tried but it's not giving me the results that I wanted 这是我尝试过的xslt,但没有给我想要的结果
First try: 第一次尝试:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" 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="fact[number = !0]"/>
</xsl:stylesheet>
Second try 第二次尝试
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="deFac/fact"/>
</xsl:copy>
</xsl:template>
<xsl:template match="deFac/fact/[demfact/number != '0']">
<xsl:copy>
<xsl:apply-templates select="@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Do you know where I made my mistake ? 你知道我犯错了吗? I'm really blocked and everything I tried seems to not work as excpected.
我真的被挡住了,我尝试的一切似乎都无法正常工作。
Thank you in advance for your help 预先感谢您的帮助
第一次尝试将<xsl:template match="fact[number = !0]"/>
更改为<xsl:template match="fact[demfact/number = 0]"/>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.