我对XSL很陌生,我试图改变和合并元素。我需要在InDesign中使用XML
在:
<?xml version="1.0" encoding="UTF-8" ?>
<catalog>
<node>
<Surname>Smith</Surname>
<Name>Paul</Name>
<Address1>New York</Address1>
<Address2>Los Angeles</Address2>
</node>
<node>
<Surname>White</Surname>
<Name>John</Name>
<Address1>San Francisco</Address1>
<Address2>Miami</Address2>
</node>
</catalog>
后:
<?xml version="1.0" encoding="UTF-8" ?>
<catalog>
<node>
<Name>Paul Smith</Name>
<Address2>Los Angeles</Address2>
<Address1>New York</Address1>
</node>
<node>
<Name>John White</Name>
<Address2>Miami</Address2>
<Address1>San Francisco</Address1>
</node>
</catalog>
我不知道如何实现这一目标。
感谢您的帮助
答案 0 :(得分:0)
这个XSLT应该做你需要的,尽管它没有重新排序地址。他们必须重新订购吗?
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="node">
<node>
<xsl:apply-templates select="Name"/>
<xsl:apply-templates select="Address2"/>
<xsl:apply-templates select="Address1"/>
</node>
</xsl:template>
<xsl:template match="Name">
<Name>
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="../Surname"/>
</Name>
</xsl:template>
<xsl:template match="Surname" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>