OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] Transforming a schema with XSL

[ Lists Home | Date Index | Thread Index ]

I need help transforming a schema (which appears at the top of the XML
document).  I also need to transform the XML data itself.  I am looking to
"convert" the xml data from one type to another... you do this with XSL
correct?

I have a little snippet of the schema which needs to be transformed:

THIS:
<s:AttributeType name="CSHIP" rs:number="3" rs:write="true">
  <s:datatype dt:type="number" rs:dbtype="numeric" dt:maxLength="19"
rs:scale="0" rs:precision="4" rs:fixedlength="true" rs:maybenull="false" />


NEEDS TO BECOME THIS:
<s:AttributeType name="CSHIP" rs:number="3" rs:nullable="true"
rs:maydefer="true" rs:writeunknown="true">
  <s:datatype dt:type="number" rs:dbtype="numeric" dt:maxLength="19"
rs:scale="0" rs:precision="4" rs:fixedlength="true" />

    Is this possible, fairly straight forward, easy to explain?


Yes, it's very straightforward - though unless you explain how the output is
derived from the input, it's difficult to give you the right code. But
something like the following would do it:

<xsl:template match="s:attributeType">
  <xsl:copy>
  <xsl:copy-of select="@name | @rs:number"/>
  <xsl:attribute name="rs:write">true</xsl:attribute>
</xsl:template>

<xsl:template match="s:datatype">
  <xsl:copy>
  <xsl:copy-of select="@dt:type | @rs:dbtype | @dt:maxLength | @rs:scale |
@rs:precision"/>
</xsl:template>

You need to wrap these template rules in an <xsl:stylesheet> element that
also contains an "identity template rule" to copy other elements unchanged -
there's an example of such a rule in the XSLT spec itself.

Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS