我有以下XML:
<FeatureGroup FeatureGroup="Bundesländer">
<Feature>
<FeatureValue>
<Value LanguageCode="fr">Brandenburg</Value>
<Value LanguageCode="de">Brandenburg</Value>
<Value LanguageCode="en">Brandenburg</Value>
</FeatureValue>
</Feature>
</FeatureGroup>
我想让它被xsl转换,但我无法选择FeatureGroup-Value“Bundesländer”。这是xsl:
<field name="federalState">
<xsl:for-each select="FeatureGroups/FeatureGroup[FeatureGroup = 'Bundesländer']">
<xsl:for-each select="Feature/FeatureValue/Value[@LanguageCode= 'de']">
<xsl:value-of select="." />
</xsl:for-each>
</xsl:for-each>
</field>
如何选择带有变音符号的属性值?
答案 0 :(得分:3)
XML和XPath完全支持Unicode,因此选择任何Unicode字符都不是问题,您只需要确保您的路径选择带有@
的属性节点,即将<xsl:for-each select="FeatureGroups/FeatureGroup[FeatureGroup = 'Bundesländer']">
替换为{{ 1}}。
答案 1 :(得分:1)
如果您在以正确的编码方式保存文件时遇到问题(如Sjoerd的评论中所述),您可以随时使用 “变音实体”(与HTML中相同):
ä=&amp; auml;
Bundesländer= Bundesl&amp; auml; nder
Here你找到了一份完整的清单。
答案 2 :(得分:1)
事实证明这不是你的问题,但理论上可能的是,有一个重音字母的两个Unicode表示:一个作为单个Unicode代码点(组合形式),一个作为两个Unicode代码点(分解形式) )。在XPath 1.0中,他们不会比较平等。在XPath 2.0中,它们可能会也可能不会相等,具体取决于默认的排序规则,这取决于处理器。
我将这个问题描述为理论问题,因为我从未真正看到它在实践中出现过。我认为这是因为大多数工具都会产生组合形式的字符,除非你不顾一切地获得分解形式。