我想刪除具有例外的空標記。
我做了一個XSL以除去所有空標籤,但有例外。按照下面的XSL:如何刪除XSL中含有條件的所有空標記
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:preserve-space elements="cEAN"/ priority="1">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(@*) and not(*) and (not(text()) or .=-1)]"/>
</xsl:stylesheet>
當按以下規則XML,它的正常工作,
<?xml version="1.0" encoding="utf-8"?>
<NFe xmlns:n0="http://mynamespace">
<cProd>0000000000001</cProd>
<cEAN> </cEAN>
<xProd>ARV NAT</xProd>
<NCM>01000</NCM>
<CFOP>9999</CFOP>
</uCom>
</Nfe>
轉型XML:
<?xml version="1.0" encoding="UTF-8"?>
<NFe xmlns:n0="http://mynamespace">
<cProd>0000000000001</cProd>
<cEAN />
<xProd>ARV NAT</xProd>
<NCM>01000</NCM>
<CFOP>9999</CFOP>
</NFe>
但XML遵循以下規則時,不工作。
<?xml version="1.0" encoding="utf-8"?>
<NFe xmlns:n0="http://mynamespace">
<cProd>0000000000001</cProd>
<cEAN/>
<xProd>ARV NAT</xProd>
<NCM>01000</NCM>
<CFOP>999</CFOP>
<uCom/>
</Nfe>
轉型XML:
<?xml version="1.0" encoding="UTF-8"?>
<NFe xmlns:n0="http://mynamespace">
<cProd>0000000000001</cProd>
<xProd>ARV NAT</xProd>
<NCM>01000</NCM>
<CFOP>9999</CFOP>
</NFe>
標籤切安不保留,它是刪除所有空標籤。
有人可以幫助我嗎?
我不明白你的問題。爲什麼應該將空的' '標籤**刪除?你說「*我製作了一個XSL來刪除所有空標籤,但是例外*」。我沒有看到這種例外。您的第二個模板將刪除**全部**空標籤**和**其他唯一內容爲「-1」的標籤。 –
2015-02-07 04:22:07
這顯然是要刪除'cEAN'和'uCOm'。他們沒有屬性,沒有子節點,也沒有文字。因此你和'條件中的所有三個條件都是真實的,並且它們會匹配。您可能只需要查看該表達式的邏輯。 – Flynn1179 2015-02-07 14:43:49
我是XSL新手,我想刪除除之外的所有空白標籤你知道我該怎麼做? –
2015-02-09 09:26:06