Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 当根元素有很多属性时,如何选择元素_Xml_Xslt_Xpath_Gbxml - Fatal编程技术网

Xml 当根元素有很多属性时,如何选择元素

Xml 当根元素有很多属性时,如何选择元素,xml,xslt,xpath,gbxml,Xml,Xslt,Xpath,Gbxml,我有以下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:schemaLocatio

我有以下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>

Trois Rivieres,加拿大PQ
46.210000
-72.350000
我想选择“纬度”值。 我使用的是下面的XPath表达式,它不返回任何内容:

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


我是XPath新手,如果有人能帮我解决这个问题,我将不胜感激

您有一个默认名称空间
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>


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> 


非常感谢您,它现在起作用了!我正在使用oXigen验证我的XSLT样式表。我想接受两个答案,因为两个答案都起作用了,但我只能接受一个答案显然:sHi再次强调,我是XSLT新手,就像我前面提到的。我只是想知道我是否可以使用表达式xsl:for each select=”“>在我的XSLT中不止一次,如何?谢谢你,我会非常感谢你的帮助。你能为同样的问题发一个新问题吗?通过这种方式,您可以向我们提供有关您的要求的更多详细信息,以及获得更好答案的更多机会。非常感谢您的回复!它现在可以工作了:)您好,我是XSLT新手,正如我前面提到的。我只是想知道我可以在XSLT中多次使用表达式xsl:for each select=“”>吗?谢谢你,我非常感谢你的帮助——请用示例输入XML和所需输出创建另一个问题。说明您希望使用xsl:for-each实现某些功能。
<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>