0
<xsl:template match="country[@name]">
    <xsl:value-of select="."/>
    <xsl:if test="country=[*stan"]" >
    </xsl:if> </xsl:template> 

誰かがこのクエリのどこが間違っているのか教えてもらえますか?「スタン」が含まれている国(トルクメニスタンなど)の名前のみを返すことになっています。XMLデータには、国/地域、名前、人口が含まれます。

4

1 に答える 1

2

コードには2つの問題があります。

  1. ifステートメントのXPath式。これは、XPathの構文に従わないため間違っています。国の名前にstanが含まれているかどうかをifステートメントで確認する場合、XPath式は次のようになります。

     country[contains(@name, 'stan')]
    
  2. その修正があっても、スタイルシートは「stan」を含む国名と一致しません。これは、一致式が名前属性(country [@name])を持つすべての国と一致し、value-ofを使用して国名を出力しているためです。テンプレート内。

コードを修正するための解決策は、value-of要素をif要素に変更し、XPath式を前に指定したものから変更することです。

ただし、テンプレートに入る前に条件を一致させる方がはるかに簡単です。したがって、解決策は次のようになります。

<xsl:template match="country[contains(@name, 'stan')]">
    <xsl:value-of select="@name" />
</xsl:template>
于 2013-02-18T08:21:20.900 に答える