XSLT 简单转换
XSLT simple transforming
我有一个非常简单的任务,但我被困在这里。
所以,我有这样的 XML 文件:
<entries>
<entry>
<field>field value</field>
</entry>
...
<entry>
<field>field value</field>
</entry>
并且应该使用 XSLT 进行转换,如下所示:
<entries>
<entry field="field value">
...
<entry field="field value">
</entries>
你能帮我做个模板吗?非常感谢。
这可以通过以下 XSLT 完成:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8"
indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="entry">
<xsl:copy>
<xsl:attribute name="field">
<xsl:value-of select="field"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="field"/>
</xsl:transform>
应用于示例输入时XML
<entries>
<entry>
<field>field value 1</field>
</entry>
<entry>
<field>field value 2</field>
</entry>
</entries>
生成以下输出:
<entries>
<entry field="field value 1"/>
<entry field="field value 2"/>
</entries>
模板匹配entry
<xsl:template match="entry">
复制 entry
并添加 field
field
节点的值作为属性:
<xsl:copy>
<xsl:attribute name="field">
<xsl:value-of select="field"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
并且模板匹配 field
<xsl:template match="field"/>
为空并删除 field
节点。
我有一个非常简单的任务,但我被困在这里。
所以,我有这样的 XML 文件:
<entries>
<entry>
<field>field value</field>
</entry>
...
<entry>
<field>field value</field>
</entry>
并且应该使用 XSLT 进行转换,如下所示:
<entries>
<entry field="field value">
...
<entry field="field value">
</entries>
你能帮我做个模板吗?非常感谢。
这可以通过以下 XSLT 完成:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8"
indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="entry">
<xsl:copy>
<xsl:attribute name="field">
<xsl:value-of select="field"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="field"/>
</xsl:transform>
应用于示例输入时XML
<entries>
<entry>
<field>field value 1</field>
</entry>
<entry>
<field>field value 2</field>
</entry>
</entries>
生成以下输出:
<entries>
<entry field="field value 1"/>
<entry field="field value 2"/>
</entries>
模板匹配entry
<xsl:template match="entry">
复制 entry
并添加 field
field
节点的值作为属性:
<xsl:copy>
<xsl:attribute name="field">
<xsl:value-of select="field"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
并且模板匹配 field
<xsl:template match="field"/>
为空并删除 field
节点。