XPathで大文字小文字を無視することはできません。あなたは、しかし、収容することができます。例えば
- それらがASCIIの範囲の文字のみを含むと仮定要素:
//*[
translate(
name(),
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz'
) = 'myname'
]
属性が(*
の代わりに@*
と)同じように機能するであろう。
あなたはこれであなたのXPath式を膨らませたくない場合は、すべて、エレメントケース-下げる可能性があり、XSLTを経由して、たとえば、事前に属性名:あなたはXML文字列を低くするロードする前に
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{translate(name(), $upper, $lower)}">
<xsl:apply-templates select="node() | @*" />
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{translate(name(), $upper, $lower)}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
要素および属性名の適切な大文字と小文字を定義するドキュメントのXMLスキーマを記述することを検討してください。次に、入ってくるドキュメントをスキーマに対して検証し、無効なドキュメントを拒否します。これがXMLの仕組みです。大文字と小文字を区別するXMLの世界で名前の大文字小文字を無視することは、あなたが目指すべきものではありません。 –
お返事ありがとうございました。 C#でこのアプローチを示すリンクを教えてください。 –