gpt4 book ai didi

XSLT 后续兄弟意外结果

转载 作者:行者123 更新时间:2023-12-03 16:23:28 24 4
gpt4 key购买 nike

这是我的 XML:

<?xml version="1.0" encoding="utf-8"?>
<root>
<employees>
<region>
<country>AUS</country>
<count>1</count>
</region>
<region>
<country>BEL</country>
<count>0</count>
</region>
<region>
<country>PER</country>
<count>3</count>
</region>
<region>
<country>ALA</country>
<count>5</count>
</region>
</employees>
</root>

这是我的 XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:variable name="map">
</xsl:variable>
<xsl:template match="employees">
<html>
<body>
<table>
<xsl:variable name="regionsWithNonZeroCount" select="region[count &gt; 0]"></xsl:variable>
<xsl:for-each select="$regionsWithNonZeroCount[position() mod 2 = 1]">
<tr>
<td><xsl:value-of select="country"/></td>
<td><xsl:value-of select="following-sibling::region/country"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

XSLT 应该首先排除所有计数不大于 0 的区域(即它应该排除 BEL),并且从剩余的区域中,它应该一次占用两个并将它们显示在具有两列的表格行中,每个区域一个。

这是我期待的结果:
AUS | PER
-----------
ALA |

然而实际结果如下:
AUS | BEL
-----------
ALA |

这是一个演示该问题的 XSLT fiddle :

https://xsltfiddle.liberty-development.net/eiZQaGp/9

我不明白为什么 regionsWithNonZeroCount 时输出 BEL在 xsl:for-each 中迭代的变量循环不应包含 BEL。我怀疑 following-sibling没有考虑到 select regionsWithNonZeroCount 上的条件应排除 BEL 的变量。我对 XSLT 没有太多经验,所以任何关于如何达到我想要的结果的建议都将不胜感激。

最佳答案

你的怀疑是正确的。要获得您想要的结果,请尝试:

<xsl:template match="employees">
<html>
<body>
<table>
<xsl:variable name="regionsWithNonZeroCount" select="region[count > 0]"/>
<xsl:for-each select="$regionsWithNonZeroCount[position() mod 2 = 1]">
<xsl:variable name="i" select="position()" />
<tr>
<td>
<xsl:value-of select="country"/>
</td>
<td>
<xsl:value-of select="$regionsWithNonZeroCount[2*$i]/country"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

关于XSLT 后续兄弟意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53752617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com