【发布时间】:2020-07-08 08:40:10
【问题描述】:
我有一个包含各种子元素的父元素,我需要对其进行计数。我遇到的问题是每个子元素的名称不同,所以每次我使用 count(*) 时,编号都会重新开始。我需要编号去 1.1、1.2、1.3...
父标签<application> 为 1,<ident> 为 1.1,<kitapplic> 为 1.2,<tctoproof> 为 1.3
我以为我可以做一个 count(child::application) ,但那没有用。感谢您的帮助。
<application>
<ident>
<para>This Technical Order is applicable.</para>
</ident>
<kitapplic>
<kitapptbl>
<kitapptblrow>
<model>Model</model>
<serialno>Serial Number</serialno>
<kitno>Kit Required</kitno>
</kitapptblrow>
</kitapptbl>
</kitapplic>
<tctoproof>
<para>Time Compliance Technical Order (TCTO) verification, in accordance
with TO 00-5-15, was accomplished 28 August 2019 at Nellis Air Force
Base with GCS serial number 5147.</para>
</tctoproof>
</application>
【问题讨论】:
-
几个问题...您的意思是将其标记为 sgml 而不是 xml?你真正想做的是什么(比计数元素更高的水平)?你的输出应该是什么样的?你用什么来执行 XPath(它是 XSLT 的一部分吗?)?
-
是的,这是 SGM。我正在使用 Arbortext Styler 创建样式表。您可以指定元素为编号类型,并且可以选择使用 XPATH 表达式。父标签
为 1, 为 1.1, 为 1.2, 为 1.3 -
我也试过 /Application/child::node() 但也没有用。
-
也许计数不是我需要的。 position( ) 会给我父元素中的节点编号位置。但我无法让它工作。
-
可以想出 xpath/xquery 表达式,它会给你每个节点的深度;例如,两个
<para>s 将是每个深度3,等等。但我不确定如何将第一个<para>转换为“1.1.1”,第二个转换为“1.3” .1".