gpt4 book ai didi

xslt - 选择属性中定义了XPath的节点

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

我想使用在相同XML文档的属性中定义的XPath选择节点。
XML文件示例:

<section count-node="table/row">
<table>
<row>row1</row>
<row>row2</row>
<row>row3</row>
</table>
</section>


现在我想使用XSLT来获取行数,例如

<xsl:template match="section">
<xsl:variable name="count" select="count({MY VALUE FOR @count-node}})"/>
<xsl:value-of select="$count"/>
</xsl:template>


哪里

count({MY VALUE FOR @count-node}})


应该由

count(/table/row)


在处理样式表时。
当然应该返回

3


我无法在样式表中使用'/ table / row',因为我不知道元素的内容。它不必是一个表,也可以是嵌套的表。

我怎样才能做到这一点?

最佳答案

如果您的XPath表达式非常简单,则可以使用以下方法:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="section">
<xsl:variable name="expression" select="@count-node" as="node()"/>
<xsl:value-of select="count(
descendant::*[$expression =
string-join(
(ancestor::*[.=$expression/../descendant::*]/name(),
name()),
'/')] )"/>
</xsl:template>
</xsl:stylesheet>


它计算所有计算出的XPath(相对于 section而言)等于XPath相对于 @count-node的XPath的后代元素。

关于xslt - 选择属性中定义了XPath的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24020026/

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