我希望我能够计算ePub中最高div
的兄弟姐妹(脚注)。我需要在通过XSLT传递注释之前将值传递给属性。
for $note in doc('/db/custom_jh/bukwor.xml')//tei:note[@place='bottom']
let $parent := count($note[preceding-sibling::tei:div[@n='1']])
let $update := update insert attribute att2 {$parent} into $note
return $note
尝试使用$note[preceding-sibling::tei:div[@n='1']]
或$note[ancestor-or-self::tei:div[@n='1']]
只返回0
或所有div的总和。
如果可能的话,来自XSLT的<xsl:number level="any" select="tei:div[@n='1']/>"
。
更新
计数的最小代码(仍然不起作用,仅返回6×1
,至少应该有一个2
:
for $note at $count in doc('/db/custom_jh/bukwor.xml')//tei:note[@place='bottom']
let $parent := count($note[ancestor-or-self::*/tei:div[@n='1']])
return $parent
答案 0 :(得分:0)
我不了解XML的ePub格式,并且没有提供样本XML,所以要求不清楚,至少对我来说是这样。但根据标题,你可能想要这样的东西:
let $parent := count($note/parent::*/preceding-sibling::tei:div[@n='1'])
基本上从当前tei:div
的父元素计算前一个兄弟$note
,其中tei:div
的{{1}}属性值等于n
。
答案 1 :(得分:0)
整个例子略显糟糕。最后,我重组了整个事情。目前,我是这样做的:
let $chaps :=
(
let $countAll := count($doc//tei:note)
for $chapter at $count in $doc//tei:div[@n='1']
let $countPreceding := count($chapter/preceding::tei:div[@n='1']//tei:note[@place='bottom'])
let $params :=
<parameters>
<param name="footnoteNo" value="{$countPreceding}"/>
</parameters>
return
<entry name="OEBPS/chapter-{$count}.xhtml" type="xml">
{
transform:transform($chapter, doc("/db/custom_jh/xslt/style-web.xsl"), $params)
}
</entry>
)
count($chapter/preceding::tei:div[@n='1']//tei:note[@place='bottom'])
对我有用。 (我需要在一个文件中收集所有脚注,并在不同文件中反向链接到索引的位置。)