<xsl:template match="country[@name]">
<xsl:value-of select="."/>
<xsl:if test="country=[*stan"]" >
</xsl:if> </xsl:template>
誰かがこのクエリのどこが間違っているのか教えてもらえますか?「スタン」が含まれている国(トルクメニスタンなど)の名前のみを返すことになっています。XMLデータには、国/地域、名前、人口が含まれます。
<xsl:template match="country[@name]">
<xsl:value-of select="."/>
<xsl:if test="country=[*stan"]" >
</xsl:if> </xsl:template>
誰かがこのクエリのどこが間違っているのか教えてもらえますか?「スタン」が含まれている国(トルクメニスタンなど)の名前のみを返すことになっています。XMLデータには、国/地域、名前、人口が含まれます。
コードには2つの問題があります。
ifステートメントのXPath式。これは、XPathの構文に従わないため間違っています。国の名前にstanが含まれているかどうかをifステートメントで確認する場合、XPath式は次のようになります。
country[contains(@name, 'stan')]
その修正があっても、スタイルシートは「stan」を含む国名と一致しません。これは、一致式が名前属性(country [@name])を持つすべての国と一致し、value-ofを使用して国名を出力しているためです。テンプレート内。
コードを修正するための解決策は、value-of要素をif要素に変更し、XPath式を前に指定したものから変更することです。
ただし、テンプレートに入る前に条件を一致させる方がはるかに簡単です。したがって、解決策は次のようになります。
<xsl:template match="country[contains(@name, 'stan')]">
<xsl:value-of select="@name" />
</xsl:template>