Xml 如何获取XPath中的元素数
我从Schematron和XPath开始。在Schematron文档中,我提供了验证m业务规则的上下文,因此我提供了section/body/p。由于我在上下文中提供了p标记,那么我如何查询以计算p标记的总数?这是XML文件Xml 如何获取XPath中的元素数,xml,xpath,schematron,Xml,Xpath,Schematron,我从Schematron和XPath开始。在Schematron文档中,我提供了验证m业务规则的上下文,因此我提供了section/body/p。由于我在上下文中提供了p标记,那么我如何查询以计算p标记的总数?这是XML文件 <section> <body> <p> <t>Document Body</t> </p> <p>
<section>
<body>
<p>
<t>Document Body</t>
</p>
<p>
<t>Document Body</t>
</p>
<p>
<t>Document Body</t>
</p>
</body>
</section>
文件正文
文件正文
文件正文
这就是我所质疑的
<sch:pattern name="ELEMENT_LIMIT">
<sch:rule context="section/body/p" >
<sch:assert test="count(.//following-sibling::p) <=2">more than 1 sibling</sch:assert>
</sch:rule>
</sch:pattern>
超过1个兄弟姐妹
但是这不起作用。如果一个
元素的以下同级元素少于2个,则此报告将进行报告
<sch:pattern id="too-many-following-siblings">
<sch:rule context="p">
<sch:report test="count(following-sibling::p) lt 2">
Less than 2 following-sibling <p> elements.
</sch:report>
</sch:rule>
</sch:pattern>
少于2个以下同级p元素。
为什么=2
而不是=2
?我发现这是一种奇怪的方法,可能缺少上下文。。。但是为什么不选择context=“section/body”
,然后将XPath表达式设置为count(./p)=2
(或者任何您想要的)<代码>跟随兄弟::p<代码>只计算兄弟姐妹的代码:<代码> 元素,这意味着如果在中间有一个<代码> <代码>标签,它会把计数弄乱。除非这是您真正想要的…Schematron实现(probatron)返回断言失败的上下文,这就是我使用section/body/p获取实际p标记的XPath的原因。我只想在大于2的body标记下有2个p标记,然后它应该返回额外p标记的XPath