2
我試圖將XML文件看起來像這樣扁平化XML屬性和文本到同級元素
<?xml version="1.0" encoding="UTF-8"?>
<Records xmlns="http://some.place.net">
<Record>
<length unit="in">96</length>
<width unit="in">3.75</width>
<height unit="in">1.75</height>
<weight unit="lbs">8</weight>
</Record>
</Records>
到的東西,看起來像這樣
<?xml version="1.0" encoding="UTF-8"?>
<Records xmlns="http://some.place.net">
<Record>
<length>96</length>
<lengthunit>in</lengthunit>
<width>3.75</width>
<widthunit>in</widthunit>
<height>1.75</height>
<heightunit>in</heightunit>
<weight>8</weight>
<weightunit>lbs</weightunit>
</Record>
</Records>
我XLST樣式表看起來像這樣。我無法弄清楚如何讓新元素顯示爲前面元素的兄弟。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://www.something.com">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="vNamespace" select="namespace-uri(/*)"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@unit">
<xsl:element name="{name(..)}{name()}" namespace="{$vNamespace}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
這就是我最終取而代之的。
<Records xmlns="http://some.place.net">
<Record>
<length>
<lengthunit>in</lengthunit>96</length>
<width>
<widthunit>in</widthunit>3.75</width>
<height>
<heightunit>in</heightunit>1.75</height>
<weight>
<weightunit>lbs</weightunit>8</weight>
</Record>
</Records>
分裂'的 '移動' @ *'不在'xsl:copy'中。 –
o11c