以下是我的用户xml:(users.xml)
<?xml version="1.0"?>
<a:class xmlns:a="a">
<a:users>
<a:user>User1</a:user>
<a:userid>9901</a:userid>
</a:users>
<a:users>
<a:user>User2</a:user>
<a:userid>9902</a:userid>
</a:users>
<a:users>
<a:user>User3</a:user>
<a:userid>9903</a:userid>
</a:users>
<a:users>
<a:user>User4</a:user>
<a:userid>9904</a:userid>
</a:users>
<a:users>
<a:user>User5</a:user>
<a:userid>9905</a:userid>
</a:users>
</a:class>
这是我的sites.xml:
<?xml version="1.0"?>
<a:sites xmlns:a="a">
<a:user>
<a:hassite>true</a:hassite>
<a:userid>9901</a:userid>
</a:user>
<a:user>
<a:hassite>false</a:hassite>
<a:userid>9902</a:userid>
</a:user>
<a:user>
<a:hassite>true</a:hassite>
<a:userid>9903</a:userid>
</a:user>
<a:user>
<a:hassite>false</a:hassite>
<a:userid>9904</a:userid>
</a:user>
<a:user>
<a:hassite>false</a:hassite>
<a:userid>9905</a:userid>
</a:user>
</a:class>
我的XSL样式表:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="a">
<xsl:template match="/a:class/a:users">
<xsl:value-of select="document('sites.xml')/a:sites/a:user/a:userid"/>
</xsl:template>
</xsl:stylesheet>
我要做的是显示users.xml中的用户名和userid,然后读取sites.xml,如果userid在xml中,且<a:hassite>
值等于'false'
,则显示“活跃”这个词。
有人能给我一些提示吗?
答案 0 :(得分:2)
节点集比较仅适用于:
<xsl:variable name="vSource2" select="document('sites.xml')">
<xsl:template match="/a:class/a:users">
<xsl:if test="a:userid = $vSource2
/a:sites
/a:user[a:hassite='true']
/a:userid">
<xsl:value-of select="a:userid"/>
</xsl:if>
</xsl:template>
这样,您可以使用模式
<xsl:template match="/a:class/a:users[
a:userid = document('sites.xml')
/a:sites
/a:user[a:hassite='true']
/a:userid
]">
<xsl:value-of select="a:userid"/>
</xsl:template>
答案 1 :(得分:1)
以下样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="a">
<xsl:output method="text"/>
<xsl:variable name="sites" select="document('sites.xml')"/>
<xsl:template match="a:users">
(<xsl:value-of select="a:user"/> / <xsl:value-of select="a:userid"/>
<xsl:if
test="$sites/a:sites/a:user[a:userid=current()/a:userid]/a:hassite='false'"> / active</xsl:if>)
</xsl:template>
</xsl:stylesheet>
应用于users.xml
时生成以下输出:
(User1 / 9901)
(User2 / 9902 / active)
(User3 / 9903)
(User4 / 9904 / active)
(User5 / 9905 / active)
调整最终输出格式。