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

有人可以告訴我該查詢出錯的位置。我應該只返回其中有「stan」的國家的名字(土庫曼斯坦等)。 XML數據包括國家/地區,名稱,人口。查詢爲「stan」過濾的XSLT返回姓名

回答

2

有兩件事情錯在你的代碼:IF語句的,因爲它 不遵循的XPath的語法這是錯誤的

  1. 的XPath表達式。如果你想在if 聲明的國家的名稱中是否包含斯坦檢查則 XPath表達式應該是:

    country[contains(@name, 'stan')] 
    
  2. 即使與校正樣式表將不匹配包含「斯坦」國名 其中匹配表達式匹配具有名稱屬性(country [@name])的所有 國家,然後您使用模板內部的值輸出國家/地區名稱 。

用於固定代碼溶液將被改變值的元件插入 的如果元件,以及改變從我以前指定 所述一個XPath表達式。

但是,在輸入模板之前匹配條件要簡單得多。 所以解決辦法是:

<xsl:template match="country[contains(@name, 'stan')]"> 
    <xsl:value-of select="@name" /> 
</xsl:template> 
+0

非常感謝! – NinaC 2013-02-18 08:58:33

+0

很高興我能幫到;) – 2013-02-18 09:43:18

相關問題