我在file:///Users/username/foopath
上有一份tei-xml文档。我需要通过XSLT 2.0转换访问这些文档以获取密钥。
我有一个关键字,应该在//tei:seg[@type='dep_event']/@corresp
因此,我声明了一个用于文档收集的变量:
<xsl:variable name="coll"
select="collection('file:///Users/username/foopath')"/>
和一个键:
<xsl:key name="correspidkey"
match="tei:seg[@type='dep_event' and @corresp]"
use="@corresp"></xsl:key>
然后我按如下方式将密钥部署到集合上(该密钥拒绝来自self::
的任何不必要的回报):
<xsl:variable name="correspvar"
select="self::seg[@type='dep_event' and @corresp]/@corresp"/>
<xsl:value-of select="$coll/(key('correspidkey',$correspvar)
except $correspvar)/upper-case(@id)"
separator=", "/>
</xsl:element>
</xsl:when>
Saxon HE 9.6.07返回Content is not allowed in prolog
,但我无法确定此错误的确切含义。如果我删除此行,则错误消失,文件处理正常。也许我将collection()
与密钥一起使用了?
非常感谢。
答案 0 :(得分:2)
错误是因为您对collection()
的调用选择了格式不正确的XML文件。您可以(a)使用集合URI中的;select=*.xml
过滤掉非XML文件,或者(b)使用;on-error=ignore
过滤非XML文件。