[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Transforming a schema with XSL
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@n...] Sent: Wednesday, April 10, 2002 12:41 AM To: 'Karl Stubsjoen'; xml-dev@l... Subject: RE: 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@n... work: Michael.Kay@s... ----------------------------------------------------------------- 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>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|