Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old January 21st, 2004, 10:38 AM
Registered User
 
Join Date: Sep 2003
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
Default Apply sylesheet to XML using msxml (VB6)

Hi there,

I'm using a style sheet to transform a xml document into another xml document. When I try to apply the style sheet into the xml I get an error:

>

This name may not contain the '$' character:
-->$<--node/*[1]/@name

<

This is the part of the style sheet that generates the error (full stylesheet as attachment):
Code:
<xsl:template name="mergeDocs">
<xsl:param name="node"/>
<xsl:for-each select="$node/*">
<xsl:element name="$node/*[1]/@name">
<xsl:copy-of select="./*"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
I use this code in XMLSpy and it works well, I use the same xsl using libxslt (for use in C) and I never get this problem...

Is msxml different in any way from all the rest of the xslt libraries?

code used (VB version):

Code:
Dim docResult As New MSXML2.DOMDocument
Set docResult = getDocAsXml2()

Dim xsltDoc As New MSXML2.FreeThreadedDOMDocument
result = xsltDoc.Load(path & "xml21.xsl")

If (Not result) Then
MsgBox "XSL file was not loaded correctly !!"
End If

Dim xslt As New MSXML2.XSLTemplate
Set xslt.stylesheet = xsltDoc ''' <-place where the error is returned

Dim proc As IXSLProcessor
proc = xslt.createProcessor

proc.input = docResult
proc.Transform

getAsXml = proc.output
Thank you for all the replies

Luís Pinho



 
Old January 21st, 2004, 11:43 AM
joefawcett's Avatar
Wrox Author
 
Join Date: Jun 2003
Posts: 3,074
Thanks: 1
Thanked 38 Times in 37 Posts
Default

Can you show us the two files? Attachments are not accepted.

Joe (MVP - xml)
 
Old January 22nd, 2004, 05:27 AM
Registered User
 
Join Date: Sep 2003
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Quote:
quote:Originally posted by joefawcett
 Can you show us the two files? Attachments are not accepted.

Joe (MVP - xml)
I didn't include them all becauase they are a little big...

Here they are:

XML:

Code:
<?xml version="1.0" standalone="yes" ?> 
- <Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="default">
- <Field name="Compressed_Field">
- <Compressed sub-type="ASCII">
- <![CDATA[ 
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxE
b2N1bWVudCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh
bmNlIiBuYW1lPSJkZWZhdWx0Ij48L0RvY3VtZW50Pg==

  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string_size_0">
- <Compressed sub-type="ASCII">
- <![CDATA[ 
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkw

  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string_size_1">
- <Compressed sub-type="ASCII">
- <![CDATA[ 
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MA==

  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string_size_2">
- <Compressed sub-type="ASCII">
- <![CDATA[ 
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTA=

  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string_size_3">
- <Compressed sub-type="ASCII">
- <![CDATA[ 
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5

  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string_size_4">
- <Compressed sub-type="ASCII">
- <![CDATA[ MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTA=
  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string_size_5">
- <Compressed sub-type="ASCII">
- <![CDATA[ MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_numbers">
- <Compressed sub-type="ASCII">
- <![CDATA[ MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=
  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_string">
- <Compressed sub-type="ASCII">
- <![CDATA[ bHVpcy4=
  ]]> 
  </Compressed>
  </Field>
- <Field name="Compressed_Field_byteArray">
- <Compressed sub-type="binary">
- <![CDATA[ bHVpcy4=
  ]]> 
  </Compressed>
  </Field>
- <Field name="null_f32" null="true">
  <F32 /> 
  </Field>
- <Field name="Bool_Field">
  <Boolean>true</Boolean> 
  </Field>
- <Field name="DateTime">
  <DateTime>1977-02-08T20:12:23.0000000Z</DateTime> 
  </Field>
- <Field name="DateTimeArray_Field">
- <Array size="2" type="DateTime">
  <DateTime>1977-02-08T20:12:23.0000000Z</DateTime> 
  <DateTime>2004-01-21T20:52:01.0000000Z</DateTime> 
  </Array>
  </Field>
- <Document name="Document_Field_Nulls">
  <Document name="empty_d" /> 
  <Document name="null_d" null="true" /> 
- <Field name="null_f32" null="true">
  <F32 /> 
  </Field>
- <Field name="null_f64" null="true">
  <F64 /> 
  </Field>
- <Field name="null_i8" null="true">
  <I8 /> 
  </Field>
- <Field name="null_i16" null="true">
  <I16 /> 
  </Field>
- <Field name="null_i32" null="true">
  <I32 /> 
  </Field>
- <Field name="null_i64" null="true">
  <I64 /> 
  </Field>
- <Field name="null_u8" null="true">
  <U8 /> 
  </Field>
- <Field name="null_str" null="true">
  <String /> 
  </Field>
- <Field name="null_u16" null="true">
  <U16 /> 
  </Field>
- <Field name="null_u32" null="true">
  <U32 /> 
  </Field>
- <Field name="null_u64" null="true">
  <U64 /> 
  </Field>
- <Field name="null_dt" null="true">
  <DateTime /> 
  </Field>
- <Field name="null_d_ar" null="true">
  <Array size="0" type="Document" /> 
  </Field>
- <Field name="null_f32_ar" null="true">
  <Array size="0" type="F32" /> 
  </Field>
- <Field name="null_f64_ar" null="true">
  <Array size="0" type="F64" /> 
  </Field>
- <Field name="null_i8_ar" null="true">
  <Array size="0" type="I8" /> 
  </Field>
- <Field name="null_i16_ar" null="true">
  <Array size="0" type="I16" /> 
  </Field>
- <Field name="null_i32_ar" null="true">
  <Array size="0" type="I32" /> 
  </Field>
- <Field name="null_i64_ar" null="true">
  <Array size="0" type="I64" /> 
  </Field>
- <Field name="null_str_ar" null="true">
  <Array size="0" type="String" /> 
  </Field>
- <Field name="null_u8_ar" null="true">
  <Array size="0" type="U8" /> 
  </Field>
- <Field name="null_u16_ar" null="true">
  <Array size="0" type="U16" /> 
  </Field>
- <Field name="null_u32_ar" null="true">
  <Array size="0" type="U32" /> 
  </Field>
- <Field name="null_u64_ar" null="true">
  <Array size="0" type="U64" /> 
  </Field>
- <Field name="null_dt_ar" null="true">
  <Array size="0" type="DateTime" /> 
  </Field>
- <Field name="null_op" null="true">
  <Opaque /> 
  </Field>
- <Field name="null_comp" null="true">
  <Compressed /> 
  </Field>
  </Document>
- <Field name="F32_Field">
  <F32>123421,125</F32> 
  </Field>
- <Field name="F32Array_Field">
- <Array size="2" type="F32">
  <F32>3201</F32> 
  <F32>3202</F32> 
  </Array>
  </Field>
- <Field name="F64_Field">
  <F64>23423423</F64> 
  </Field>
- <Field name="F64Array_Field">
- <Array size="2" type="F64">
  <F64>6401</F64> 
  <F64>6402</F64> 
  </Array>
  </Field>
- <Field name="I16_Field">
  <I16>23423</I16> 
  </Field>
- <Field name="I16Array_Field">
- <Array size="2" type="I16">
  <I16>161</I16> 
  <I16>162</I16> 
  </Array>
  </Field>
- <Field name="I32_Field">
  <I32>2344</I32> 
  </Field>
- <Field name="I32Array_Field">
- <Array size="2" type="I32">
  <I32>321</I32> 
  <I32>322</I32> 
  </Array>
  </Field>
- <Field name="I64_Field">
  <I64>23423444</I64> 
  </Field>
- <Field name="I64Array_Field">
- <Array size="2" type="I64">
  <I64>640001</I64> 
  <I64>640002</I64> 
  </Array>
  </Field>
- <Field name="I8_Field">
  <I8>120</I8> 
  </Field>
- <Field name="I8_Field_Space">
  <I8>32</I8> 
  </Field>
- <Field name="I8Array_Field">
- <Array size="2" type="I8">
  <I8>108</I8> 
  <I8>117</I8> 
  </Array>
  </Field>
- <Field name="Opaque_Field">
- <Opaque>
- <![CDATA[ bHVpcy4=
  ]]> 
  </Opaque>
  </Field>
- <Field name="String_Field">
- <String>
- <![CDATA[ normal string to test
  ]]> 
  </String>
  </Field>
- <Field name="String_Field_Empty">
- <String>
- <![CDATA[ 
  ]]> 
  </String>
  </Field>
- <Field name="String_Field_Space">
- <String>
- <![CDATA[  
  ]]> 
  </String>
  </Field>
- <Field name="String_Field_tag">
- <String>
- <![CDATA[ <sdf>
  ]]> 
  </String>
  </Field>
- <Field name="StringArray_Field">
- <Array size="2" type="String">
  <String>infineon</String> 
  <String>portugal</String> 
  </Array>
  </Field>
- <Field name="U16_Field">
  <U16>12345</U16> 
  </Field>
- <Field name="U16Array_Field">
- <Array size="2" type="U16">
  <U16>161</U16> 
  <U16>162</U16> 
  </Array>
  </Field>
- <Field name="U32_Field">
  <U32>9876</U32> 
  </Field>
- <Field name="U32Array_Field">
- <Array size="2" type="U32">
  <U32>321</U32> 
  <U32>322</U32> 
  </Array>
  </Field>
- <Field name="U64_Field">
  <U64>1234567890</U64> 
  </Field>
- <Field name="U64Array_Field">
- <Array size="2" type="U64">
  <U64>641</U64> 
  <U64>642</U64> 
  </Array>
  </Field>
- <Field name="U8_Field">
  <U8>120</U8> 
  </Field>
- <Field name="U8Array_Field">
- <Array size="2" type="U8">
  <U8>97</U8> 
  <U8>98</U8> 
  </Array>
  </Field>
- <Document name="qw">
- <Document name="er">
- <Document name="ty">
- <Field name="String_Field_tag">
- <String>
- <![CDATA[ <sdf>
  ]]> 
  </String>
  </Field>
  </Document>
  </Document>
  </Document>
- <Document name="d">
- <Document name="sd">
- <Document name="s">
- <Document name="s">
- <Document name="a">
- <Field name="StringArray_Field">
- <Array size="2" type="String">
  <String>infineon</String> 
  <String>portugal</String> 
  </Array>
  </Field>
  </Document>
  </Document>
  </Document>
  </Document>
  </Document>
- <Document name="a">
- <Document name="b">
- <Document name="Document_Field_Nulls">
  <Document name="empty_d" /> 
  <Document name="null_d" null="true" /> 
- <Field name="null_f32" null="true">
  <F32 /> 
  </Field>
- <Field name="null_f64" null="true">
  <F64 /> 
  </Field>
- <Field name="null_i8" null="true">
  <I8 /> 
  </Field>
- <Field name="null_i16" null="true">
  <I16 /> 
  </Field>
- <Field name="null_i32" null="true">
  <I32 /> 
  </Field>
- <Field name="null_i64" null="true">
  <I64 /> 
  </Field>
- <Field name="null_u8" null="true">
  <U8 /> 
  </Field>
- <Field name="null_str" null="true">
  <String /> 
  </Field>
- <Field name="null_u16" null="true">
  <U16 /> 
  </Field>
- <Field name="null_u32" null="true">
  <U32 /> 
  </Field>
- <Field name="null_u64" null="true">
  <U64 /> 
  </Field>
- <Field name="null_dt" null="true">
  <DateTime /> 
  </Field>
- <Field name="null_d_ar" null="true">
  <Array size="0" type="Document" /> 
  </Field>
- <Field name="null_f32_ar" null="true">
  <Array size="0" type="F32" /> 
  </Field>
- <Field name="null_f64_ar" null="true">
  <Array size="0" type="F64" /> 
  </Field>
- <Field name="null_i8_ar" null="true">
  <Array size="0" type="I8" /> 
  </Field>
- <Field name="null_i16_ar" null="true">
  <Array size="0" type="I16" /> 
  </Field>
- <Field name="null_i32_ar" null="true">
  <Array size="0" type="I32" /> 
  </Field>
- <Field name="null_i64_ar" null="true">
  <Array size="0" type="I64" /> 
  </Field>
- <Field name="null_str_ar" null="true">
  <Array size="0" type="String" /> 
  </Field>
- <Field name="null_u8_ar" null="true">
  <Array size="0" type="U8" /> 
  </Field>
- <Field name="null_u16_ar" null="true">
  <Array size="0" type="U16" /> 
  </Field>
- <Field name="null_u32_ar" null="true">
  <Array size="0" type="U32" /> 
  </Field>
- <Field name="null_u64_ar" null="true">
  <Array size="0" type="U64" /> 
  </Field>
- <Field name="null_dt_ar" null="true">
  <Array size="0" type="DateTime" /> 
  </Field>
- <Field name="null_op" null="true">
  <Opaque /> 
  </Field>
- <Field name="null_comp" null="true">
  <Compressed /> 
  </Field>
  </Document>
- <Document name="c">
- <Field name="I16_Field">
  <I16>23423</I16> 
  </Field>
  </Document>
- <Document name="rr">
- <Field name="I16Array_Field">
- <Array size="2" type="I16">
  <I16>161</I16> 
  <I16>162</I16> 
  </Array>
  </Field>
  </Document>
- <Document name="rssr">
- <Field name="I32_Field">
  <I32>2344</I32> 
  </Field>
  </Document>
- <Field name="F32Array_Field">
- <Array size="2" type="F32">
  <F32>3201</F32> 
  <F32>3202</F32> 
  </Array>
  </Field>
- <Field name="F64_Field">
  <F64>23423423</F64> 
  </Field>
  </Document>
  </Document>
- <Document name="dsdds">
- <Field name="F32_Field">
  <F32>123421</F32> 
  </Field>
  </Document>
- <Document name="dfdf">
- <Field name="I32Array_Field">
- <Array size="2" type="I32">
  <I32>321</I32> 
  <I32>322</I32> 
  </Array>
  </Field>
  </Document>
- <Document name="F">
- <Document name="a">
- <Document name="b">
- <Field name="F64Array_Field">
- <Array size="2" type="F64">
  <F64>6401</F64> 
  <F64>6402</F64> 
  </Array>
  </Field>
  </Document>
  </Document>
  </Document>
- <Document name="ddf">
- <Document name="dfdf">
- <Field name="I64_Field">
  <I64>23423444</I64> 
  </Field>
  </Document>
  </Document>
- <Document name="ddsd">
- <Document name="ff">
- <Document name="ff">
- <Field name="I64Array_Field">
- <Array size="2" type="I64">
  <I64>641</I64> 
  <I64>642</I64> 
  </Array>
  </Field>
  </Document>
  </Document>
  </Document>
- <Document name="dd">
- <Document name="d">
- <Field name="String_Field_Space">
- <String>
- <![CDATA[  
  ]]> 
  </String>
  </Field>
  </Document>
  </Document>
- <Field name="doc_array">
- <Array size="2" type="Document">
- <Document name="doc_array">
- <Field name="null_f32" null="true">
  <F32 /> 
  </Field>
- <Field name="null_i16_ar" null="true">
  <Array size="0" type="I16" /> 
  </Field>
  <Document name="null_doc" null="true" /> 
- <Field name="null_doc_ar" null="true">
  <Array size="0" type="Document" /> 
  </Field>
- <Document name="a">
- <Document name="b">
- <Document name="c">
- <Field name="i16_ar">
- <Array size="2" type="I16">
  <I16>16001</I16> 
  <I16>16002</I16> 
  </Array>
  </Field>
  </Document>
- <Document name="s">
- <Document name="f">
- <Field name="str">
- <String>
- <![CDATA[ This is a small test
  ]]> 
  </String>
  </Field>
  </Document>
  </Document>
  </Document>
  </Document>
- <Field name="str">
- <String>
- <![CDATA[ 
  ]]> 
  </String>
  </Field>
- <Document name="b">
- <Document name="c">
- <Field name="i32_ar">
- <Array size="2" type="I32">
  <I32>321</I32> 
  <I32>322</I32> 
  </Array>
  </Field>
- <Field name="i64_ar">
- <Array size="2" type="I64">
  <I64>641</I64> 
  <I64>642</I64> 
  </Array>
  </Field>
  </Document>
- <Field name="f32">
  <F32>1231231</F32> 
  </Field>
- <Field name="f64">
  <F64>567522323</F64> 
  </Field>
- <Field name="i_8">
  <I8>97</I8> 
  </Field>
- <Field name="i16">
  <I16>567</I16> 
  </Field>
- <Document name="f">
- <Field name="i32">
  <I32>54654</I32> 
  </Field>
  </Document>
- <Document name="e">
- <Field name="i64">
  <I64>5673444</I64> 
  </Field>
  </Document>
  </Document>
- <Document name="d">
- <Field name="i8_ar">
- <Array size="2" type="I8">
  <I8>108</I8> 
  <I8>117</I8> 
  </Array>
  </Field>
  </Document>
- <Field name="str_ar">
- <Array size="2" type="String">
  <String>infineon</String> 
  <String>portugal</String> 
  </Array>
  </Field>
- <Field name="u16_ar">
- <Array size="2" type="U16">
  <U16>161</U16> 
  <U16>162</U16> 
  </Array>
  </Field>
- <Field name="u32_ar">
- <Array size="2" type="U32">
  <U32>321</U32> 
  <U32>322</U32> 
  </Array>
  </Field>
- <Field name="u64_ar">
- <Array size="2" type="U64">
  <U64>641</U64> 
  <U64>642</U64> 
  </Array>
  </Field>
- <Field name="u8_ar">
- <Array size="2" type="U8">
  <U8>97</U8> 
  <U8>98</U8> 
  </Array>
  </Field>
- <Field name="date_time">
  <DateTime>1977-02-08T20:12:23.0000000Z</DateTime> 
  </Field>
- <Field name="date_ar">
- <Array size="2" type="DateTime">
  <DateTime>1977-02-08T20:12:23.0000000Z</DateTime> 
  <DateTime>2004-01-21T20:52:01.0000000Z</DateTime> 
  </Array>
  </Field>
- <Field name="u_8_0">
  <U8>0</U8> 
  </Field>
- <Field name="u16_0">
  <U16>3</U16> 
  </Field>
- <Field name="u32_0">
  <U32>545</U32> 
  </Field>
- <Field name="u_8">
  <U8>97</U8> 
  </Field>
- <Field name="u16">
  <U16>567</U16> 
  </Field>
- <Field name="u32">
  <U32>56557</U32> 
  </Field>
- <Field name="u64">
  <U64>56552327</U64> 
  </Field>
- <Field name="null_date" null="true">
  <DateTime /> 
  </Field>
  </Document>
- <Document name="doc_array">
  <Document name="empty_d" /> 
  <Document name="null_d" null="true" /> 
- <Field name="null_f32" null="true">
  <F32 /> 
  </Field>
- <Field name="null_f64" null="true">
  <F64 /> 
  </Field>
- <Field name="null_i8" null="true">
  <I8 /> 
  </Field>
- <Field name="null_i16" null="true">
  <I16 /> 
  </Field>
- <Field name="null_i32" null="true">
  <I32 /> 
  </Field>
- <Field name="null_i64" null="true">
  <I64 /> 
  </Field>
- <Field name="null_u8" null="true">
  <U8 /> 
  </Field>
- <Field name="null_str" null="true">
  <String /> 
  </Field>
- <Field name="null_u16" null="true">
  <U16 /> 
  </Field>
- <Field name="null_u32" null="true">
  <U32 /> 
  </Field>
- <Field name="null_u64" null="true">
  <U64 /> 
  </Field>
- <Field name="null_dt" null="true">
  <DateTime /> 
  </Field>
- <Field name="null_d_ar" null="true">
  <Array size="0" type="Document" /> 
  </Field>
- <Field name="null_f32_ar" null="true">
  <Array size="0" type="F32" /> 
  </Field>
- <Field name="null_f64_ar" null="true">
  <Array size="0" type="F64" /> 
  </Field>
- <Field name="null_i8_ar" null="true">
  <Array size="0" type="I8" /> 
  </Field>
- <Field name="null_i16_ar" null="true">
  <Array size="0" type="I16" /> 
  </Field>
- <Field name="null_i32_ar" null="true">
  <Array size="0" type="I32" /> 
  </Field>
- <Field name="null_i64_ar" null="true">
  <Array size="0" type="I64" /> 
  </Field>
- <Field name="null_str_ar" null="true">
  <Array size="0" type="String" /> 
  </Field>
- <Field name="null_u8_ar" null="true">
  <Array size="0" type="U8" /> 
  </Field>
- <Field name="null_u16_ar" null="true">
  <Array size="0" type="U16" /> 
  </Field>
- <Field name="null_u32_ar" null="true">
  <Array size="0" type="U32" /> 
  </Field>
- <Field name="null_u64_ar" null="true">
  <Array size="0" type="U64" /> 
  </Field>
- <Field name="null_dt_ar" null="true">
  <Array size="0" type="DateTime" /> 
  </Field>
- <Field name="null_op" null="true">
  <Opaque /> 
  </Field>
- <Field name="null_comp" null="true">
  <Compressed /> 
  </Field>
  </Document>
  </Array>
  </Field>
- <Document name="test_doc">
- <Field name="null_f32" null="true">
  <F32 /> 
  </Field>
- <Field name="null_i16_ar" null="true">
  <Array size="0" type="I16" /> 
  </Field>
  <Document name="null_doc" null="true" /> 
- <Field name="null_doc_ar" null="true">
  <Array size="0" type="Document" /> 
  </Field>
- <Document name="a">
- <Document name="b">
- <Document name="c">
- <Field name="i16_ar">
- <Array size="2" type="I16">
  <I16>16001</I16> 
  <I16>16002</I16> 
  </Array>
  </Field>
  </Document>
- <Document name="s">
- <Document name="f">
- <Field name="str">
- <String>
- <![CDATA[ This is a small test
  ]]> 
  </String>
  </Field>
  </Document>
  </Document>
  </Document>
- <Field name="u_8">
  <U8>0</U8> 
  </Field>
- <Field name="u16">
  <U16>567</U16> 
  </Field>
- <Field name="u32">
  <U32>56557</U32> 
  </Field>
- <Field name="u64">
  <U64>56552327</U64> 
  </Field>
- <Document name="ert">
- <Document name="b">
- <Field name="f32">
  <F32>1231231</F32> 
  </Field>
  </Document>
  </Document>
- <Document name="ew">
- <Document name="we">
- <Document name="ew">
- <Document name="we">
- <Document name="b">
- <Field name="f64">
  <F64>567522323</F64> 
  </Field>
  </Document>
  </Document>
  </Document>
  </Document>
  </Document>
  </Document>
- <Field name="str">
- <String>
- <![CDATA[ 
  ]]> 
  </String>
  </Field>
- <Document name="b">
- <Document name="c">
- <Field name="i32_ar">
- <Array size="2" type="I32">
  <I32>321</I32> 
  <I32>322</I32> 
  </Array>
  </Field>
- <Field name="i64_ar">
- <Array size="2" type="I64">
  <I64>641</I64> 
  <I64>642</I64> 
  </Array>
  </Field>
  </Document>
- <Field name="f32">
  <F32>1231231</F32> 
  </Field>
- <Field name="f64">
  <F64>567522323</F64> 
  </Field>
- <Field name="i_8">
  <I8>97</I8> 
  </Field>
- <Field name="i16">
  <I16>567</I16> 
  </Field>
- <Document name="f">
- <Field name="i32">
  <I32>54654</I32> 
  </Field>
  </Document>
- <Document name="e">
- <Field name="i64">
  <I64>5673444</I64> 
  </Field>
  </Document>
  </Document>
- <Document name="d">
- <Field name="i8_ar">
- <Array size="2" type="I8">
  <I8>108</I8> 
  <I8>117</I8> 
  </Array>
  </Field>
  </Document>
- <Field name="str_ar">
- <Array size="2" type="String">
  <String>infineon</String> 
  <String>portugal</String> 
  </Array>
  </Field>
- <Field name="u16_ar">
- <Array size="2" type="U16">
  <U16>161</U16> 
  <U16>162</U16> 
  </Array>
  </Field>
- <Field name="u32_ar">
- <Array size="2" type="U32">
  <U32>321</U32> 
  <U32>322</U32> 
  </Array>
  </Field>
- <Field name="u64_ar">
- <Array size="2" type="U64">
  <U64>641</U64> 
  <U64>642</U64> 
  </Array>
  </Field>
- <Field name="u8_ar">
- <Array size="2" type="U8">
  <U8>97</U8> 
  <U8>98</U8> 
  </Array>
  </Field>
- <Field name="date_time">
  <DateTime>1977-02-08T20:12:23.0000000Z</DateTime> 
  </Field>
- <Field name="date_ar">
- <Array size="2" type="DateTime">
  <DateTime>1977-02-08T20:12:23.0000000Z</DateTime> 
  <DateTime>2004-01-21T20:52:01.0000000Z</DateTime> 
  </Array>
  </Field>
- <Field name="u_8_0">
  <U8>0</U8> 
  </Field>
- <Field name="u16_0">
  <U16>3</U16> 
  </Field>
- <Field name="u32_0">
  <U32>545</U32> 
  </Field>
- <Field name="u_8">
  <U8>97</U8> 
  </Field>
- <Field name="u16">
  <U16>567</U16> 
  </Field>
- <Field name="u32">
  <U32>56557</U32> 
  </Field>
- <Field name="u64">
  <U64>56552327</U64> 
  </Field>
- <Field name="null_date" null="true">
  <DateTime /> 
  </Field>
  </Document>
  </Document>

XSLT:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xml:xsd="http://www.w3.org/2001/XMLSchema" xml:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output method="xml" version="1.0" indent="yes"/>
    <xsl:template match="/">
        <xsl:element name="{./Document/@name}">
            <xsl:attribute name="xml:xsd">http://www.w3.org/2001/XMLSchema</xsl:attribute>
            <xsl:attribute name="xml:xsi">http://www.w3.org/2001/XMLSchema-instance</xsl:attribute>
            <xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" version="1.0" id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xsl:apply-templates/>
            </xs:schema>
            <xsl:for-each select="Document/*">
                <xsl:apply-templates mode="xml_implement" select="."/>
            </xsl:for-each>
        </xsl:element>
    </xsl:template>
    <xsl:template match="Document">
        <xs:element name="{@name}">
            <xs:complexType>
                <xs:sequence>
                    <xsl:apply-templates/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xsl:template>
    <xsl:template match="Field">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="Array">
        <xs:element minOccurs="0" name="{../@name}" nillable="true">
            <xs:complexType>
                <xs:sequence>
                    <xsl:apply-templates mode="array" select="./*[1]"/>    
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="String">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:string"/>
    </xsl:template>
    <xsl:template match="String" mode="array">
        <xs:element name="string" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:string"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="I8">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:byte"/>
    </xsl:template>
    <xsl:template match="I8" mode="array">
        <xs:element name="byte" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:byte"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="I16">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:short"/>
    </xsl:template>
    <xsl:template match="I16" mode="array">
        <xs:element name="short" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:short"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="I32">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:int"/>
    </xsl:template>
    <xsl:template match="I32" mode="array">
        <xs:element name="int" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:int"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="I64">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:long"/>
    </xsl:template>
    <xsl:template match="I64" mode="array">
        <xs:element name="long" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:long"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="U8">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:unsignedByte"/>
    </xsl:template>
    <xsl:template match="U8" mode="array">
        <xs:element name="unsignedByte" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:unsignedByte"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="U16">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:unsignedShort"/>
    </xsl:template>
    <xsl:template match="U16" mode="array">
        <xs:element name="unsignedShort" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:unsignedShort"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="U32">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:unsignedInt"/>
    </xsl:template>
    <xsl:template match="U32" mode="array">
        <xs:element name="unsignedInt" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:unsignedInt"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="U64">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:unsignedLong"/>
    </xsl:template>
    <xsl:template match="U64" mode="array">
        <xs:element name="unsignedLong" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:unsignedLong"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="F32">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:float"/>
    </xsl:template>
    <xsl:template match="F32" mode="array">
        <xs:element name="float" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:float"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="F64">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:double"/>
    </xsl:template>

    <xsl:template match="F64" mode="array">
        <xs:element name="double" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:double"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>


    <xsl:template match="DateTime">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:dateTime"/>
    </xsl:template>
    <xsl:template match="DateTime" mode="array">
        <xs:element name="dateTime" nillable="true">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:dateTime"/>
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="Document" mode="array">
        <xs:element name="{@name}">
            <xs:complexType>
                <xs:sequence>
                    <xsl:apply-templates/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xsl:template>

    <xsl:template match="Bool">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:boolean"/>
    </xsl:template>

    <xsl:template match="Opaque">
        <xs:element minOccurs="0" name="{../@name}" nillable="true" type="xs:base64Binary"/>
    </xsl:template>

    <xsl:template match="Compressed">
        <xs:element minOccurs="0" name="{../@name}" nillable="true"/>
    </xsl:template>





    <xsl:template match="Document" mode="xml_implement">
        <xsl:element name="{@name}">
            <xsl:if test="./@null='true'">
                <xsl:attribute name="nil">True</xsl:attribute>
            </xsl:if>
            <xsl:apply-templates mode="xml_implement"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="Field" mode="xml_implement">
        <xsl:apply-templates mode="xml_implement"/>
    </xsl:template>
    <xsl:template match="Array" mode="xml_implement">
        <xsl:element name="{../@name}">
            <xsl:if test="../@null='true'">
                <xsl:attribute name="nil">True</xsl:attribute>
            </xsl:if>
            <xsl:apply-templates mode="xml_implement_array"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="String|I8|I16|I32|I64|U8|U16|U32|U64|F32|F64|Bool|DateTime|Opaque" mode="xml_implement">
        <xsl:element name="{../@name}">
            <xsl:if test="../@null='true'">
                <xsl:attribute name="nil">True</xsl:attribute>
            </xsl:if>
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="Compressed" mode="xml_implement">
        <xsl:element name="{../@name}">
            <xsl:if test="../@null='true'">
                <xsl:attribute name="nil">True</xsl:attribute>
            </xsl:if>
            <xsl:value-of select="." disable-output-escaping="yes"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="String" mode="xml_implement_array">
        <xsl:element name="string">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="I8" mode="xml_implement_array">
        <xsl:element name="bye">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="I16" mode="xml_implement_array">
        <xsl:element name="short">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="I32" mode="xml_implement_array">
        <xsl:element name="int">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="I64" mode="xml_implement_array">
        <xsl:element name="long">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="U8" mode="xml_implement_array">
        <xsl:element name="unsignedByte">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="U16" mode="xml_implement_array">
        <xsl:element name="unsignedShort">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="U32" mode="xml_implement_array">
        <xsl:element name="unsignedInt">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="U64" mode="xml_implement_array">
        <xsl:element name="unsignedLong">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="F32" mode="xml_implement_array">
        <xsl:element name="float">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="F64" mode="xml_implement_array">
        <xsl:element name="double">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="DateTime" mode="xml_implement_array">
        <xsl:element name="dateTime">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="Document" mode="xml_implement_array">
        <xsl:element name="{@name}">
            <xsl:apply-templates mode="xml_implement"/>
        </xsl:element>
    </xsl:template>

    <xsl:template name="mergeDocs">
        <xsl:param name="node"/>
        <xsl:for-each select="$node/*">
            <xsl:element name="$node/*[1]/@name">
                <xsl:copy-of select="./*"/>
            </xsl:element>
        </xsl:for-each>
    </xsl:template>    
</xsl:stylesheet>

VB Code:

[code]
    Dim appPath As String
    Dim slashPos As Long
    Dim result As Boolean
    Dim path As String

    appPath = GetAppExePath
    slashPos = InStrRev(appPath, "\")
    path = mid(appPath, 1, slashPos)



'the function getDocAsXml2 returns a doc (DOMDocument) with the xml file loaded

    Dim docResult
    Set docResult = getDocAsXml2()


    Dim xsltDoc
  &n
 
Old January 22nd, 2004, 09:54 AM
joefawcett's Avatar
Wrox Author
 
Join Date: Jun 2003
Posts: 3,074
Thanks: 1
Thanked 38 Times in 37 Posts
Default

Don't you neeed braces around the xpath?
Code:
<xsl:template name="mergeDocs">
        <xsl:param name="node"/>
        <xsl:for-each select="$node/*">
            <xsl:element name="{$node/*[1]/@name}">
                <xsl:copy-of select="./*"/>
            </xsl:element>
        </xsl:for-each>
    </xsl:template>
As you don't seem to have a call-template instruction I'm not sure what this template does.

Joe (MVP - xml)





Similar Threads
Thread Thread Starter Forum Replies Last Post
MSXML and Schema: Using for XML-Node creation foxforest XML 1 September 5th, 2006 02:19 AM
MSXML SAX2 Help - SQL Server to XML kwilliams SQL Server DTS 0 December 15th, 2005 06:57 PM
XML Parsing Problem when using MSXML magicwanda XML 1 December 9th, 2004 01:56 PM
XML Application Development with MSXML 4.0 petercor Forum and Wrox.com Feedback 6 October 18th, 2004 08:12 PM
First contact with XML/Schema and MSXML lpinho XML 0 November 27th, 2003 09:46 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.