xslt-从xml文件中选择属性值
我有一个XML文件,如下所示:xslt-从xml文件中选择属性值,xml,xslt,Xml,Xslt,我有一个XML文件,如下所示: <BatchTable> <UUThref SocketIndex='0 - CCM' UUTResult='Passed' URL='C:\OverrideCallbacks_BatchReport[4 16 2012][4 14 18 PM].xml' FileName='OverrideCallbacks_BatchReport[4 16 2012][4 14 18 PM
<BatchTable>
<UUThref SocketIndex='0 - CCM'
UUTResult='Passed'
URL='C:\OverrideCallbacks_BatchReport[4 16 2012][4 14 18 PM].xml'
FileName='OverrideCallbacks_BatchReport[4 16 2012][4 14 18 PM].xml'
ECAFailCount='1'
Version='StationPartNumber=55555StationSerialNumber=2222TPSPartNumber=1234'/>
</BatchTable>
为了在xsl文件中选择版本,我有:
<xsl:value-of select="BatchTable/UUThref/[@Version]"/>
这不会返回任何值。我做错了什么?应该是这样的
BatchTable/UUThref/@Version
不是
…方括号是从哪里来的
我已经测试了以下各项,并且它确实有效:
xmlstarlet sel -t -m 'BatchTable/UUThref/@Version' -v . <test.xml
xmlstarlet sel-t-m'BatchTable/UUThref/@Version'-v。即使没有方括号,它也不会选择Version的值。@rkk-是否//UUThref/@Version
起作用?如果是,请尝试/UUThref/@Version
;这将缩小相关文档根的位置。您使用什么编程语言进行转换?一些XSLT处理者会对XML文件中的
等内容非常挑剔。您是否收到任何错误消息?@rkk添加了一个使用XMLStarlet的示例,以演示如何使用给定路径从文档中成功选择。如果你不能复制它,我们需要谈谈你正在使用哪些工具。我正在使用javascript。它不会返回任何错误,只是版本字段(或任何其他字段,如SocketIndex等)不会返回任何内容。它应该给您一个语法错误,准确地告诉您出错的地方—如果它不指向您的错误,那么它是一个相当蹩脚的XSLT处理器。
xmlstarlet sel -t -m 'BatchTable/UUThref/@Version' -v . <test.xml
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" version="1.0" extension-element-prefixes="exslt">
<xsl:output omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="BatchTable/UUThref/@Version">
<xsl:call-template name="value-of-template">
<xsl:with-param name="select" select="."/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="value-of-template">
<xsl:param name="select"/>
<xsl:value-of select="$select"/>
<xsl:for-each select="exslt:node-set($select)[position()>1]">
<xsl:value-of select="' '"/>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>