gpt4 book ai didi

xslt - XPath,获取min属性的值

转载 作者:行者123 更新时间:2023-12-03 17:06:29 26 4
gpt4 key购买 nike

因此,我以前从未使用过XSLT,而我仅以最简单的形式使用过XPath。
我有一个具有两个属性Stamina和willpower的Xml元素“ Earth”。两者都包含数字。
我想做的是在“地球”一词旁边显示这些属性中最少的一个的值。
我似乎无法锻炼如何在XPath中调用函数。

这是我的XSLT

    <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
version="2.0">
<!--<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
-->

<xsl:output method="html" indent="yes"/>

<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="//Rings"/>
</body>
</html>
</xsl:template>

<xsl:template match="//Rings">
<h2>Rings</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Earth</th>
<th>
<xsl:value-of select="fn:min(fn:number(Earth/@*))"/>
</th>
</tr>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>

最佳答案

MS Visual Studio预包装了.NET XSLT处理器XslCompiledTransform,这是XSLT 1.0处理器。

另一方面,min()是XPath 2.0中的标准功能,而不是XPath 1.0中的标准功能。 XSLT 1.0仅使用XPath 1.0。

XSLT 1.0解决方案:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="Earth">
<xsl:value-of select=
"@*[not(. > ../@*)][1]"/>
</xsl:template>
</xsl:stylesheet>


当此转换应用于以下XML文档时(您尚未提供!):

<Rings>
<Earth stamina="3" willpower="6"/>
</Rings>


所需的正确结果产生了:

3


在.NET中,可以使用第三方XSLT 2.0处理器,例如Saxon.NET或XQSharp。以下是XSLT 2.0解决方案:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:template match="Earth">
<xsl:sequence select="min(@*)[1]"/>
</xsl:template>
</xsl:stylesheet>

关于xslt - XPath,获取min属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857326/

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