在XML文件中刪除attribut的一部分的節點我有以下XML代碼:如何使用XSLT
<OML>
<bg-def xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="EX1"/>
</OML>
我想刪除屬性的xmlns:XSI和使用XSLT它的價值,所以該結果將是這樣的:
<OML>
<bg-def name="EX1"/>
</OML>
我tryied用下面的XSLT代碼做到這一點:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" xml:space="preserve"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="bg-def|@ xmlns:xsi"/>
</xsl:transform>
編寫我的代碼之前,我的編輯警告我: 「W名稱空間前綴xmlns尚未被聲明爲」。 當我刪除表達式:xsi並且只寫xmlns,沒有任何警告更多。但是,當我編譯和執行我的程序時,什麼也沒有發生,我沒有得到預期的輸出。 我試着也改變我的XSLT文件與此的最後一行:
<xsl:template match="bg-def|@ name"/>
然後將結果看起來像這樣:
<OML>
<bg-def xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</OML>
這意味着,屬性名一直很移除好。但是我想用屬性xmlns:xsi來做到這一點。 有人可以幫我做這個嗎? 感謝您的幫助。爲BD-DEF節點 永邦
@ Vitaliy,謝謝你的幫助,但答案並沒有達到我想要的。我不知道如果我的問題是不明確的,但我需要的是這樣的輸出: ' ' ,你給我的解決方案,爲我提供這個 ' EX1 '。謝謝 –
現在一切正常Vitaliy。我遵循你給我的鏈接,我說我必須在我的XSLT文件的頂部添加** xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance」**。再次感謝。 –
@Franky N - 非常有趣的是,我的例子給了你不正確的結果 - 我試着用撒克遜處理器,它給了我: –
Vitaliy