您已經找到了主要問題的答案 - xsl:stylesheet
的exclude-result-prefixes
屬性應該用於指定我們不希望在文字結果上覆制的所有名稱空間前綴(以空格分隔的列表)元素。
您的其他問題也很容易回答:
的情況下,比較少人?
使用:
translate($s1, $vUpper, $vLower)
=
translate($s2, $vUpper, $vLower)
該評估爲true()
什麼時候兩個字符串$s1
和$s2
ARA不區分大小寫的,平等的。
變量$vUpper
應包含字母表的所有大寫字母,而變量$vLower
應包含字母表的所有小寫字母。
下面是一個完整的例子:
<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:param name="pNameOfElementsToDelete" select="'DeLetE'"/>
<xsl:variable name="vUpper" select=
"'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:variable name="vLower" select=
"'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[true()]">
<xsl:if test=
"not(
translate(name(), $vUpper, $vLower)
=
translate($pNameOfElementsToDelete, $vUpper, $vLower)
)
">
<xsl:call-template name="identity"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
當此XML文檔上施加:
<a>
<b>
<Delete/>
</b>
<dell/>
<c>
<deLete/>
</c>
</a>
這種轉變產生一個新的XML文檔中的任何元件,其名稱對於"DeLetE"
等於不區分大小寫:
<a>
<b/>
<dell/>
<c/>
</a>
嗯,它似乎增加了以下襬脫這個實例'exclude-result-prefixes =「myColor」' –
我可以建議閱讀一本關於XSLT的好書,將顯着增強你理解至少最基本的XSLT概念? –