我有 tei-xml 文件,我在其中标记了中世纪文档中的命名实体,特别是使用<persName/>
. 一个简单的例子:
<persName nymref="#Bernard_Faure_Senior">Bernardus Fabri senior</persName>
然而,手稿中经常有一些名字需要我标记为“Raimunda uxor Bernardi Fabri”(即“Raimunda,Bernard Faure 的妻子”)。在这里,我以嵌套方式标记了这两个名称:
<persName nymref="#Raimunda_Faure">Raimunda uxor
<persName nymref="#Bernard_Faure_Senior">Bernardi Fabri
senior</persName></persName>
通常这对于查询数据来说不是问题。但是,我想通过 XSLT 2.0 为网页输出以下内容,其中每个名称都转换为指向该人自己网页的 URL(使用@nymRef
)。上面应该输出到这个:
<a href="www.foo.com/person/Raimunda_Faure">Raimunda
uxor</a><a href="www.foo.com/person/Bernard_Faure_Senior">Bernardi
Fabri<a>
(即。...etiam nec tortor erat Raimunda uxor Bernardi Fabri est leo cursus magna, maximus finibus...)
此外,有时会发生以下情况(两个名称嵌套在一个中):
<persName nymref="#Raimunda_Faure">Raimunda uxor
<persName nymref="#Bernard_Faure_Senior">Bernardi Fabri
senior</persName> matris
<persName nymRef="Bernard_Faure_Junior">Bernardi
junior</persName></persName>
(虽然从来没有<persName>
嵌套三层的情况)
我完全不知道如何递归地区分和处理//persName[x]
以及 //persname[x]//persName[x]
使它们成为单独的 URL。
url 是从静态值 + 生成的after-substring(//tei:persName/@nymRef,'#')
。显然,一个简单的 XSL 语句会返回一个基数错误:
concat('www.foo.com/person',after-substring(//tei:persName/@nymRef,'#'))
非常感谢您的任何帮助。