Variables XSL使用XML匹配多个变量
我试图将xsl变量(即key1、key2)与xml节点字符串相匹配。 问题:xsl变量可以像key1、key2、key3、key4一样变化,直到key.length。。。 问题:如何修改xsl,以便在使用键[I]时,ti将显示所有xml节点匹配项 以下是我的XML:Variables XSL使用XML匹配多个变量,variables,xslt,Variables,Xslt,我试图将xsl变量(即key1、key2)与xml节点字符串相匹配。 问题:xsl变量可以像key1、key2、key3、key4一样变化,直到key.length。。。 问题:如何修改xsl,以便在使用键[I]时,ti将显示所有xml节点匹配项 以下是我的XML: <?xml version="1.0" encoding="UTF-8"?> <document> <metadata> <field>marketing business
<?xml version="1.0" encoding="UTF-8"?>
<document>
<metadata>
<field>marketing business</field>
<field>PageTitle1 One</field>
<field>marketing business link</field>
<field>planning development</field>
<field>PageTitle2 Two</field>
<field>planning development link</field>
<field>learning development</field>
<field>PageTitle3 Threee</field>
<field>learning development link</field>
</metadata>
</document>
有什么帮助吗?或者有没有一种方法可以将其放入类似数组的变量或任何不同的方法?…考虑将“键”放在一个单独的XML文档中,称之为“keys.XML”
市场营销
商业
然后,您可以在XSLT中创建一个变量来引用此文档
<xsl:variable name="keys" select="document('keys.xml')/keys" />
例如,使用此变量,您可以检查字段元素是否与所有键匹配,如下所示:
<xsl:variable name="matches" select="count($keys/key[contains(current(), .)])" />
<xsl:choose>
<xsl:when test="$matches = count($keys/key)">
试试这个XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:variable name="keys" select="document('keys.xml')/keys" />
<xsl:variable name="totalkeys" select="count($keys/key)" />
<xsl:template match="/">
<xsl:for-each select="document/metadata/field">
<xsl:variable name="matches" select="count($keys/key[contains(current(), .)])" />
<xsl:choose>
<xsl:when test="$matches = $totalkeys">
matches all <xsl:value-of select="." /><br/>
</xsl:when>
<xsl:when test="$matches = 1">
matches one <xsl:value-of select="." /><br/>
</xsl:when>
<xsl:when test="$matches > 0">
matches some <xsl:value-of select="." /><br/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
匹配所有
匹配一个
匹配一些
<xsl:variable name="keys" select="document('keys.xml')/keys" />
<xsl:variable name="matches" select="count($keys/key[contains(current(), .)])" />
<xsl:choose>
<xsl:when test="$matches = count($keys/key)">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:variable name="keys" select="document('keys.xml')/keys" />
<xsl:variable name="totalkeys" select="count($keys/key)" />
<xsl:template match="/">
<xsl:for-each select="document/metadata/field">
<xsl:variable name="matches" select="count($keys/key[contains(current(), .)])" />
<xsl:choose>
<xsl:when test="$matches = $totalkeys">
matches all <xsl:value-of select="." /><br/>
</xsl:when>
<xsl:when test="$matches = 1">
matches one <xsl:value-of select="." /><br/>
</xsl:when>
<xsl:when test="$matches > 0">
matches some <xsl:value-of select="." /><br/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>