我敢肯定这是一个非常简单的修复,但我很难过。我有输入 XML 与以下根元素,并重复子元素:
<modsCollection
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.loc.gov/mods/v3"
xsi:schemaLocation="
http://www.loc.gov/mods/v3
http://www.loc.gov/standards/mods/v3/mods-3-4.xsd">
<mods version="3.4">
...
我有一个 XSLT 表,其中包含以下内容来匹配每个节点,并将其作为一个由元素<mods>
命名的单独文件踢出。<identifier type="local">
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.loc.gov/mods/v3">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/modsCollection">
<xsl:for-each select="mods">
<xsl:variable name="filename"
select="concat(normalize-space(
identifier[@type='local']),
'.xml')" />
<xsl:result-document href="{$filename}">
<xsl:copy-of select="."></xsl:copy-of>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
如果XML 输入在根元素中没有 xmlns:xsi、xmlns 或 xsi:schemaLoaction 属性,则此方法有效。因此,例如,它适用于以下方面:
<modsCollection>
<mods version="3.4">
...
我知道我们的一些 MODS 文件包含了前缀,但我不清楚如果我们的 XSLT 匹配不是在寻找前缀,为什么没有前缀就无法工作。任何想法或建议将不胜感激。