我正在将XML文档转换为HTML,并希望选择一些特定元素(用于HTML页面的head.title
)。
我的源XML看起来如此:
<document>
<vars>
<var name="serialno">
12345 <<--- I want THIS value
</var>
<var name="rev-date" rev="old">
2000-01-01
</var>
<var name="rev-date" rev="new">
2011-05-01 <<--- ...and also THIS value
</var>
... more vars
</vars>
... more data
</document>
现在,序列号将与“<xsl:value-of select="/vars/var@serialno"/>
”类似,但我无法弄清楚如何使用特定var
来解决name
。同样对于修订日期,除了我需要指定两个属性。 我该怎么做?
答案 0 :(得分:2)
<xsl:value-of select="document/vars/var[@name='serialno']"/>
和
<xsl:value-of select="document/vars/var[@name='rev-date' and @rev='new']"/>
要测试这一点,请访问xmlper.com并将其键入XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<html xsl:version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:value-of select="document/vars/var[@name='serialno']"/>
<xsl:value-of select="document/vars/var[@name='rev-date' and @rev='new']"/>
</html>
这是XML文档:
<document>
<vars>
<var name="serialno">
12345
</var>
<var name="rev-date" rev="old">
2000-01-01
</var>
<var name="rev-date" rev="new">
2011-05-01
</var>
... more vars
</vars>
</document>
答案 1 :(得分:1)
使用强>:
/*/vars/var[@name = 'serialno']/text()
获取所需的文本节点或只是
string(/*/vars/var[@name = 'serialno'])
获取所需的字符串。
并使用:
/*/vars/var
[@name = 'rev-date'
and
@rev = 'new'
]/text()
获取第二个所需的文本节点或只是
string(/*/vars/var
[@name = 'rev-date'
and
@rev = 'new'
]/text()
)
获取其字符串值。