|
Subject: [xsl] Seek an elegant way to remove a sub-tree from an element From: "Costello, Roger L." <costello@xxxxxxxxx> Date: Sat, 22 Oct 2011 19:19:59 +0000 |
Hi Folks,
This simpleType element contains within it another simpleType element:
<xs:simpleType name="BostonAreaElevation">
<xs:restriction>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="-1290" />
<xs:maxInclusive value="29035" />
</xs:restriction>
</xs:simpleType>
<xs:minInclusive value="0" />
<xs:maxInclusive value="120" />
</xs:restriction>
</xs:simpleType>
I want to remove the inner simpleType, thus producing:
<xs:simpleType name="BostonAreaElevation">
<xs:restriction>
<xs:minInclusive value="0" />
<xs:maxInclusive value="120" />
</xs:restriction>
</xs:simpleType>
I seek an elegant way to accomplish this.
The following is one way to accomplish it. Is there a more elegant way to
accomplish it?
<xsl:variable name="outer-simpleType">
<xsl:element name="simpleType"
namespace="{namespace-uri($simpleType)}">
<xsl:copy-of select="$simpleType/namespace::*" />
<xsl:for-each select="$simpleType/@*">
<xsl:attribute name="{name(.)}"><xsl:value-of
select="." /></xsl:attribute>
</xsl:for-each>
<xsl:element name="restriction"
namespace="{namespace-uri(simpleType/xs:restriction)}">
<xsl:copy-of
select="$simpleType/xs:restriction/namespace::*" />
<xsl:for-each select="$simpleType/xs:restriction/@*">
<xsl:attribute name="{name(.)}"><xsl:value-of
select="." /></xsl:attribute>
</xsl:for-each>
<xsl:sequence
select="$simpleType/xs:restriction/xs:*[not(self::xs:simpleType)]" />
</xsl:element>
</xsl:element>
</xsl:variable>
/Roger
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Generating Unique Identif, Lighton Phiri | Thread | Re: [xsl] Seek an elegant way to re, G. Ken Holman |
| Re: [xsl] Generating Unique Identif, G. Ken Holman | Date | Re: [xsl] Generating Unique Identif, Lighton Phiri |
| Month |