gpt4 book ai didi

xslt - 带有 namespace 的 GPX 文件的 XPath 查询?

转载 作者:行者123 更新时间:2023-12-03 16:57:23 25 4
gpt4 key购买 nike

我可以访问 <trkpt></trkpt> xpath 表达式 <xsl:for-each select='gpx/trk/trkseg/trkpt'> 的节点当 GPX 文件具有以下简单结构时:

<gpx>
<trk>
<trkseg>
<trkpt lat="50.5324906" lon="7.0842605">
<ele>105.8824463</ele>
<time>2010-07-11T08:50:16Z</time>
</trkpt>
<trkpt lat="50.5323745" lon="7.0843524">
<ele>108.7662354</ele>
<time>2010-07-11T08:50:44Z</time>
</trkpt>
...
</trkseg>
</trk>
</gpx>

当涉及命名空间时,我怎样才能达到相同的效果,例如:
<gpx xmlns="http://www.topografix.com/GPX/1/1" 
creator="MapSource 6.15.11"
version="1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd">

最佳答案

在 XSLT 1.0 中:

<xsl:apply-templates 
select="/g:gpx/g:trk/g:trkseg/g:trkpt"
xmlns:g="http://www.topografix.com/GPX/1/1"/>

在 XSLT 2.0 中:
<xsl:apply-templates 
select="/gpx/trk/trkseg/trkpt"
xpath-default-namespace="http://www.topografix.com/GPX/1/1"/>

因此,您需要在样式表中声明命名空间(前缀、URI),并将此命名空间添加到 XPath 表达式的 QName 测试中。

例如,这个 XSLT 1.0 样式表:
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="http://www.topografix.com/GPX/1/1">
<xsl:output method="text"/>
<xsl:template match="g:trkpt">
<xsl:text>Found 'trkseg' element&#xA;</xsl:text>
</xsl:template>
</xsl:stylesheet>

这个 XSLT 2.0 样式表:
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xpath-default-namespace="http://www.topografix.com/GPX/1/1">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="trkpt">
<xsl:text>Found 'trkseg' element&#xA;</xsl:text>
</xsl:template>
</xsl:stylesheet>

使用此输入:
<gpx xmlns="http://www.topografix.com/GPX/1/1"
creator="MapSource 6.15.11"
version="1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd">
<trk>
<trkseg>
<trkpt lat="50.5324906" lon="7.0842605">
<ele>105.8824463</ele>
<time>2010-07-11T08:50:16Z</time>
</trkpt>
<trkpt lat="50.5323745" lon="7.0843524">
<ele>108.7662354</ele>
<time>2010-07-11T08:50:44Z</time>
</trkpt>
</trkseg>
</trk>
</gpx>

两个输出:
Found 'trkseg' element
Found 'trkseg' element

关于xslt - 带有 namespace 的 GPX 文件的 XPath 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com