Xml XSLT:如何在输出子节点中强制命名空间
我正试图使用XSLT2.0(如果需要,我可以升级到3.0版)实现OAI-PMH获取XML,如中所述 我的问题是,根据模式的要求,在OAI-PMH标记和metadata标记中获取“xsi”名称空间。 目前我的代码有点像这样(为了简洁起见,我删除了一些东西):Xml XSLT:如何在输出子节点中强制命名空间,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我正试图使用XSLT2.0(如果需要,我可以升级到3.0版)实现OAI-PMH获取XML,如中所述 我的问题是,根据模式的要求,在OAI-PMH标记和metadata标记中获取“xsi”名称空间。 目前我的代码有点像这样(为了简洁起见,我删除了一些东西): oai_dc:dc标记中缺少。但是基于OAI-PMH规范/模式,它需要存在。有人能帮我解决这个问题吗?我可以告诉你,你可以通过把xmlns=”放在http://www.openarchives.org/OAI/2.0/“在样式表的根目录上。至
oai_dc:dc标记中缺少。但是基于OAI-PMH规范/模式,它需要存在。有人能帮我解决这个问题吗?我可以告诉你,你可以通过把
xmlns=”放在http://www.openarchives.org/OAI/2.0/“
在样式表的根目录上。至于xmlns:xsi
名称空间声明,我认为您不能用XSLT强制执行它,它在基于祖先声明的范围内,因此序列化程序不需要将其添加到子元素中。您提到的规范确实说:“每个元数据部分都必须包含属性xmlns:xsi”。我认为唯一合理的解释方法是“前缀“xsi”到名称空间“”的名称空间绑定必须在每个元数据部分的范围内”
如果规范使用DTD要求命名空间声明在特定元素上实际存在(就像某些DTD那样),那么您将遇到问题。但是我没有看到任何证据表明这个规范使用了DTD。对于XSD模式,没有办法说必须存在冗余的名称空间声明。非常感谢。我将由请求更改的人执行此操作。希望我没有“有问题”。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs" version="2.0"
>
<xsl:output indent="no" encoding="UTF-8" method="xml" omit-xml-
declaration="no" media-type="application/xml;charset=UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates select="response" />
</xsl:template>
<xsl:template match="response">
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<xsl:apply-templates select="doc"/>
</OAI-PMH>
</xsl:template>
<xsl:template match="doc">
<record>
<header>
</header>
<metadata>
<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xmlns="http://www.openarchives.org/OAI/2.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<xsl:text>call some templates</xsltext>
</metadata>
</record>
</xsl:template>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate xmlns="">2015-09-30T16:47:19Z</responseDate>
<request xmlns="" verb="ListRecords" metadataPrefix="oai_dc" set="null" from="null" until="null">http://manchester.ac.uk/escholar/api/oai2</request>
<ListRecords xmlns="">
<record>
<header>
<identifier>oai:escholar.manchester.ac.uk:uk-ac-man-scw-1964</identifier>
2010-12-02T15:44:59.733Z
</header>
<metadata>
<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
</oai_dc:dc>
</metadata>
</record>
</ListRecords>
</OAI-PMH>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"