不允许将多个项的序列作为fn:doc-available()xslt 2 3的第一个参数



我有一个XML文档,它是XML文档的列表:

dmIndex.xml:

<dmIndex>
<dmFile href="DME-SF518-CCC-AAA-D00-00-00-00AA-131A-00_en-US.XML"
dmIndex="S1000D-AAA-D00-00-00-00AA-131A-A"/>
<dmFile href="DME-SF518-MMM-AAA-D00-00-00-00AA-131A-00_en-US.XML"
dmIndex="S1000D-AAA-D00-00-00-00AA-131A-A"/>
<dmFile href="SAMPLE-A-05-21-0010-00AAA-913A-A_EN-US.xml"
dmIndex="SAMPLE-A-05-21-0010-00AAA-913A-A"/>
<dmFile href="UPF-AAA-D00-00-00-00AA-00_en-US.XML"
dmIndex=""/>
<dmFile href="SAMPLE-A-55-10-0000-00AAA-140A-A_EN-US.xml"
dmIndex="SAMPLE-A-55-10-0000-00AAA-140A-A"/>
<dmFile href="SAMPLE-A-95-10-0000-00AAA-140A-A_EN-US.xml"
dmIndex="SAMPLE-A-95-10-0000-00AAA-140A-A"/>
<dmFile href="descript_sample.xml" dmIndex="00-0-00-00-00-000-0000-A"/>
<dmFile href="proced_sample_dmRef_Checkout.xml"
dmIndex="SAMPLE-A-05-10-0000-00AAA-913A-A"/>
<dmFile href="DMC-FJ-A-00-00-00-00A-003A-A.xml"
dmIndex="FJ-A-00-00-00-00A-003A-A"/>
</dmIndex>

xslt:

<xsl:param name="dmIndex" select="'dmIndex.xml'"/>
<xsl:template match="/">
<xsl:variable name="dmRefFile" select="document($dmIndex)//dmFile[@dmIndex='S1000D-AAA-D00-00-00-00AA-131A-A']/@href"/>
<xsl:if test="doc-available($dmRefFile)">
<xsl:apply-templates select="document($dmRefFile)/dmodule"/>
</xsl:if>
</xsl:template>

我想在处理之前测试文档是否存在,但我得到了错误:一个以上项目的序列不允许作为fn:doc-available((的第一个参数

@dmIndex不是唯一的,可以为空,但我不知道如何正确过滤select语句以返回一个@href。我在不同的地方尝试过[1]

document($dmIndex)//dmFile[@dmIndex='S1000D-AAA-D00-00-00-00AA-131A-A']/@href[1]
document($dmIndex)//dmFile[@dmIndex='S1000D-AAA-D00-00-00-00AA-131A-A'][1]/@href
doc-available($dmRefFile[1])

我对测试dmRefFile的更好方法持开放态度,它只适用于XML文件。

我想你想要例如<xsl:apply-templates select="doc($dmIndex)//dmFile[@dmIndex='S1000D-AAA-D00-00-00-00AA-131A-A']/@href[doc-available(.)]/doc(.)/dmodule"/>

最新更新