2014-02-06 188 views
0

我有以下XML:如何選擇元素時,根元素有很多屬性的

<?xml version="1.0" encoding="UTF-8"?> 

<gbXML version="0.37" useSIUnitsForResults="true" volumeUnit="CubicMeters" areaUnit="SquareMeters" lengthUnit="Meters" temperatureUnit="C" xmlns="http://www.gbxml.org/schema" xsi:schemaLocation="http://www.gbxml.org/schema xsi.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Campus id="cmps-1"> 
<Location> 
<Name>Trois-Rivieres, PQ Canada</Name> 
<Latitude>46.210000</Latitude> 
<Longitude>-72.350000</Longitude> 
</Location> 
</Campus> 
</gbXML> 

我要選擇「縱橫」的價值。 我使用的是不返回任何東西下面的XPath表達式:

<p><code><xsl:value-of select="gbXML/Campus/Location/Latitude"/></code></p> 

我是新XPath中,我會很感激,如果有人可以幫助我這個

回答

0

你有一個默認的命名空間xmlns="http://www.gbxml.org/schema"

在您的XSLT中,只需添加另一個名稱空間,如xmlns:text="xmlns="http://www.gbxml.org/schema"(您正在創建默認名稱空間的快捷方式)。

還要加上exclude-result-prefixes="text"以省略輸出中的text前綴。

然後,更改:

<p><code><xsl:value-of select="gbXML/Campus/Location/Latitude"/></code></p> 

<p><code><xsl:value-of select="text:gbXML/text:Campus/text:Location/text:Latitude"/></code></p> 
+0

非常感謝您的回覆!它現在的作品:) – LillieG

+0

這兩個答案工作 – LillieG

+0

嗨,我是新來的XSLT,就像我之前提到的。我只是想知道我可以在我的XSLT中多次使用xsl:for-each select =「」>這個表達式嗎?謝謝我將非常感謝您的幫助 - – LillieG

0

你缺少XPath中的名稱空間聲明。聲明樣式表中的名稱空間,然後在xpath中使用前綴:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:gb="http://www.gbxml.org/schema"> 
<xsl:output method="xml" indent="yes"/> 

<xsl:template match="/"> 
    <p><code><xsl:value-of select="gb:gbXML/gb:Campus/gb:Location/gb:Latitude"/></code></p> 
</xsl:template> 

</xsl:stylesheet> 
+0

非常感謝你現在的作品!我使用oXigen來驗證我的XSLT樣式表 – LillieG

+0

我想接受這兩個答案,因爲這兩個答案都可以工作,但我只能接受一個顯然是:s – LillieG

+0

嗨,我是新來的XSLT,就像我之前提到的那樣。我只是想知道我可以在我的XSLT中多次使用xsl:for-each select =「」>這個表達式嗎?謝謝我會非常感謝你的幫助 – LillieG