XML XSLT 本地名称无效
XML XSLT local-name not working
我正在尝试提取节点名称中“:”之后的字符串并将其指定为字段名称,但我下面的 XSLT 似乎无法正常工作。
这是我的XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<dc:title>valley</dc:title>
<dc:creator>jhdjsdh</dc:creator>
<dc:subject>tree</dc:subject>
</oai_dc:dc>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<xsl:template match="/">
<xsl:for-each select="oai_dc:dc/*">
<field>
<xsl:attribute name="name">
<xsl:value-of select="local-name()"/>
</xsl:attribute>
<xsl:value-of select="text()"/>
</field>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我想用上面的 XSLT 无法实现什么:
<field name="title"> valley </field>
<field name="creator"> jhdjsdh</field>
<field name="subject"> tree </field>
我收到 404 尝试使用您的 link 到 freeformatter.com,但我确实尝试了 xsltransform.net,并且您的样式表使用 Xalan 工作正常。 (虽然我确实向 xsl:stylesheet 添加了一个 exclude-result-prefixes 属性)......
另请注意,您可以使用属性值模板 (AVT) 代替 xsl:attribute
来简化属性创建。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
exclude-result-prefixes="dc oai_dc">
<xsl:template match="/">
<xsl:for-each select="oai_dc:dc/*">
<field name="{local-name()}">
<xsl:value-of select="text()"/>
</field>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我正在尝试提取节点名称中“:”之后的字符串并将其指定为字段名称,但我下面的 XSLT 似乎无法正常工作。
这是我的XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<dc:title>valley</dc:title>
<dc:creator>jhdjsdh</dc:creator>
<dc:subject>tree</dc:subject>
</oai_dc:dc>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<xsl:template match="/">
<xsl:for-each select="oai_dc:dc/*">
<field>
<xsl:attribute name="name">
<xsl:value-of select="local-name()"/>
</xsl:attribute>
<xsl:value-of select="text()"/>
</field>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我想用上面的 XSLT 无法实现什么:
<field name="title"> valley </field>
<field name="creator"> jhdjsdh</field>
<field name="subject"> tree </field>
我收到 404 尝试使用您的 link 到 freeformatter.com,但我确实尝试了 xsltransform.net,并且您的样式表使用 Xalan 工作正常。 (虽然我确实向 xsl:stylesheet 添加了一个 exclude-result-prefixes 属性)......
另请注意,您可以使用属性值模板 (AVT) 代替 xsl:attribute
来简化属性创建。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
exclude-result-prefixes="dc oai_dc">
<xsl:template match="/">
<xsl:for-each select="oai_dc:dc/*">
<field name="{local-name()}">
<xsl:value-of select="text()"/>
</field>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>