[
Lists Home |
Date Index |
Thread Index
]
Further explanation of what I need to do:
The first snippet of schema below is a persisted XML recordset of a table
queried from an AS400 / DB2 system. The 2nd sample is from an identical
table but in an Access table. I'm told, that I can perform a batch update
of records from the server (AS400/DB2 data) into my Access table with some
minor modifications to the schema and the XML. I would be using ADO to
perform the insert of the XML recordset, but first I have to transform it.
Does this help, or is more information required?
Below you mention that there is an example of an "identity template rule" in
the XSLT spec itself; is this the schema at the top of the XML data?
Karl
-----Original Message-----
From: Michael Kay [mailto:michael.h.kay@ntlworld.com]
Sent: Wednesday, April 10, 2002 12:41 AM
To: 'Karl Stubsjoen'; xml-dev@lists.xml.org
Subject: RE: [xml-dev] Transforming a schema with XSL
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
-----------------------------------------------------------------
The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
initiative of OASIS <http://www.oasis-open.org>
The list archives are at http://lists.xml.org/archives/xml-dev/
To subscribe or unsubscribe from this list use the subscription
manager: <http://lists.xml.org/ob/adm.pl>
|