Я пытаюсь использовать XSLT для преобразования XML-документа в очень похожий XML-документ, но с несколькими дополнениями.У меня проблемы с получением xsl: copy-of для правильной работы.Когда я пытаюсь преобразовать следующий пример XML-документа:
<?xml version="1.0" encoding="UTF-8"?>
<mods xmlns="http://www.loc.gov/mods/v3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:mods="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">
<titleInfo>
<title>Test title
</title>
</titleInfo>
<subject authority="naf">
<geographic>Geo subject</geographic>
</subject>
<location>
<physicalLocation>Location here</physicalLocation>
</location>
<originInfo>
<dateCreated keyDate="yes">1904-01-05</dateCreated><dateCreated/>
</originInfo>
<typeOfResource>text</typeOfResource>
<genre authority="aat" valueURI="300026880">correspondence</genre>
<physicalDescription>
<extent>3 pages.</extent>
<note type="physical description">All pages ripped down the
middle.
</note>
</physicalDescription>
<relatedItem type="host" displayLabel="Collection"
<titleInfo>
<title>Collection name</title>
</titleInfo>
</relatedItem>
<accessCondition type="use and reproduction" displayLabel="Use and
Reproduction">Access condition here</accessCondition>
<identifier type="local">IDID</identifier>
</mods>
Используя следующий XSLT, в результирующий XML-документ выводятся только литеральные значения в XSLT (originInfo, accessCondition).Я не могу понять, почему это так.Когда я удаляю всю информацию заголовка из исходного XML, преобразование работает.Но все мои XML-файлы имеют этот заголовок, и я хочу, чтобы XSLT работал с ним, - я предполагаю, что мои объявления пространства имен противоречат друг другу, но я не могу понять, почему.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xlink="https://www.w3.org/1999/xlink"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mods="http://www.loc.gov/mods/v3" version="2.0" exclude-
result-prefixes="mods">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<mods>
<xsl:copy-of select="mods/titleInfo"/>
<xsl:copy-of select="mods/typeOfResource"/>
<xsl:copy-of select="mods/location"/>
<xsl:copy-of select="mods/physicalDescription"/>
<xsl:copy-of select="mods/subject"/>
<xsl:copy-of select="mods/name"/>
<xsl:copy-of select="mods/identifier"/>
<xsl:copy-of select="mods/genre"/>
<xsl:copy-of select="mods/relatedItem"/>
<xsl:copy-of select="mods/accessCondition"/>
<xsl:copy-of select="mods/language"/>
<xsl:copy-of select="mods/abstract"/>
<xsl:copy-of select="mods/note"/>
<originInfo>
<dateCreated>
<xsl:value-of select="mods/originInfo/dateCreated"/>
</dateCreated>
<dateCreated encoding="w3cdtf" keyDate="yes"
point="start">
<xsl:value-of select="mods/originInfo/dateCreated"/>
</dateCreated>
</originInfo>
<accessCondition type="use and reproduction">
<xsl:text>Copyright statement here</xsl:text>
</accessCondition>
</mods>
</xsl:template>
Мой ожидаемый результат:
<?xml version="1.0" encoding="UTF-8"?>
<mods xmlns="http://www.loc.gov/mods/v3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:mods="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">
<titleInfo>
<title>Test title
</title>
</titleInfo>
<subject authority="naf">
<geographic>Geo subject</geographic>
</subject>
<location>
<physicalLocation>Location here</physicalLocation>
</location>
<typeOfResource>text</typeOfResource>
<genre authority="aat" valueURI="300026880">correspondence</genre>
<physicalDescription>
<extent>3 pages.</extent>
<note type="physical description">All pages ripped down the
middle.
</note>
</physicalDescription>
<relatedItem type="host" displayLabel="Collection"
<titleInfo>
<title>Collection name</title>
</titleInfo>
</relatedItem>
<accessCondition type="use and reproduction" displayLabel="Use and
Reproduction">Access condition here</accessCondition>
<identifier type="local">IDID</identifier>
<originInfo>
<dateCreated>1904-01-05 </dateCreated>
<dateCreated encoding="w3cdtf" keyDate="yes" point="start">1904-01-05 </dateCreated>
</originInfo>
<accessCondition type="use and reproduction">Copyright statement here</accessCondition>
</mods>