アポストロフィ記号を含むテキストに問題があります
たとえば、シンボルを持つこのxmlをテストしようとすると、どうすれば比較できますか?
<xsl:for each select="country[nation='India's]">
これはエラーを示すステートメントです
よろしくナンダ.A
アポストロフィ記号を含むテキストに問題があります
たとえば、シンボルを持つこのxmlをテストしようとすると、どうすれば比較できますか?
<xsl:for each select="country[nation='India's]">
これはエラーを示すステートメントです
よろしくナンダ.A
それを行う1つの方法は次のとおりです。
<xsl:variable name="apos" select='"'"'/>
<!-- ... later ... -->
<xsl:for-each select="country[nation=concat('India', $apos, 's')]">
ここでの問題は2つあります。
'India\'s'
、オプションではありません。これらは:
次のような構成:
<xsl:for-each select="country[nation='India's']">
<xsl:for-each select="country[nation='India's']">
XMLレイヤーを渡しますが、XSLTレイヤーに違反します。どちらの場合も(DOMに格納されている)有効な属性値はcountry[nation='India's']
であり、これは明らかにXPath構文エラーです。
次のような構成:
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
<xsl:for-each select="country[nation=concat("India", "'", "s")]">
明らかにXMLレイヤーに違反しています。ただし、実際の値(XSLTドキュメントを最初に解析できた場合)はcountry[nation=concat('India', "'", 's')]
XPath式として完全に有効であるため、XSLTレイヤー(!)に違反することはありません。
したがって、レイヤー1とレイヤー2の両方を通過する方法を見つける必要があります。1つの方法は、上記のように可変の方法です。別の方法は次のとおりです。
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
これはXSLTにはとして表示されますcountry[nation=concat('India', "'", 's')]
。
個人的には、「可変的な方法」の方が扱いやすいと思います。