【发布时间】:2011-01-13 20:34:49
【问题描述】:
我有一个如下的 XML 结构
<Categories>
<cat>Video</cat>
<cat>Audio</cat>
<cat>Hybrid</cat>
</Categories>
在这样的查找 XML 中有一个可用于此类别的映射
<Lookup>
<cat>Video</cat>
<mapping>1</mapping>
</Lookup>
<Lookup>
<cat>Audio</cat>
<mapping>2</mapping>
</Lookup>
<Lookup>
<cat>Hybrid</cat>
<mapping>3</mapping>
</Lookup>
</ValueSet>
现在我正在寻找一个 XSLT 解决方案,它可以在不使用节点集扩展函数的情况下将 Max 值作为转换结果返回给我。
这是我的测试用例
测试用例 1:
输入:
<Categories>
<cat>Video</cat>
<cat>Audio</cat>
<cat>Hybrid</cat>
</Categories>
预期输出 3
测试用例 2:
输入:
<Categories>
<cat>Video</cat>
<cat>Hybrid</cat>
</Categories>
预期输出 3
测试用例 3:
输入:
<Categories>
<cat>Video</cat>
<cat>Audio</cat>
</Categories>
预期输出 2
测试用例 4:
输入:
<Categories>
<cat>Audio</cat>
<cat>Hybrid</cat>
</Categories>
预期输出 3
测试用例 5:
输入:
<Categories>
<cat>Video</cat>
</Categories>
预期输出 1
提前致谢。
来自 cmets 的更新:
我的查找信息不是 可加载 [with
document()功能]。我需要做for-each类别输入,然后导出 查找值。之后,我需要 获得最大值。我有一个可从 xsl 获得的扩展 引擎处理器来得到这个 xslt 如下所示:
<xsl:value-of select='xx:lookupValue("MappingXML","Category",.,"COL1")'/>此函数返回字符串。这个 函数不返回节点集。我 通过捕获所有变量来尝试 执行后的派生值
for-each,但要进一步处理 此变量输出 (RTF),在 XSLt 中 1.0,我没有处理任何 node-set() 函数。
【问题讨论】:
-
好问题,+1。请参阅我的答案以获得完整的解决方案。 :)