Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Преобразование ADO-XML в ClientDataSet(CDS)-XML / 9 сообщений из 9, страница 1 из 1
12.10.2011, 16:14
    #37479046
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Здравствуйте,
нужно преобразовать Xml-файл который делает ADO в xml-файл который понимает ClientDataSet(который от борланда)
Исходный XML-ADO
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
 xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
 xmlns:rs='urn:schemas-microsoft-com:rowset'
 xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
 <s:ElementType name='row' content='eltOnly' rs:updatable='true'>
  <s:AttributeType name='stor_id' rs:number='1' rs:writeunknown='true' rs:basecatalog='pubs' rs:basetable='sales'
    rs:basecolumn='stor_id' rs:keycolumn='true'>
   <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='4' rs:fixedlength='true' rs:maybenull='false'/>
  </s:AttributeType>
  <s:AttributeType name='ord_num' rs:number='2' rs:writeunknown='true' rs:basecatalog='pubs' rs:basetable='sales'
    rs:basecolumn='ord_num' rs:keycolumn='true'>
   <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='20' rs:maybenull='false'/>
  </s:AttributeType>
  <s:AttributeType name='ord_date' rs:number='3' rs:writeunknown='true' rs:basecatalog='pubs' rs:basetable='sales'
    rs:basecolumn='ord_date'>
   <s:datatype dt:type='dateTime' rs:dbtype='timestamp' dt:maxLength='16' rs:scale='3' rs:precision='23' 
rs:fixedlength='true'
    rs:maybenull='false'/>
  </s:AttributeType>
  <s:AttributeType name='qty' rs:number='4' rs:writeunknown='true' rs:basecatalog='pubs' rs:basetable='sales'
    rs:basecolumn='qty'>
   <s:datatype dt:type='i2' dt:maxLength='2' rs:precision='5' rs:fixedlength='true' rs:maybenull='false'/>
  </s:AttributeType>
  <s:AttributeType name='payterms' rs:number='5' rs:writeunknown='true' rs:basecatalog='pubs' rs:basetable='sales'
    rs:basecolumn='payterms'>
   <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='12' rs:maybenull='false'/>
  </s:AttributeType>
  <s:AttributeType name='title_id' rs:number='6' rs:writeunknown='true' rs:basecatalog='pubs' rs:basetable='sales'
    rs:basecolumn='title_id' rs:keycolumn='true'>
   <s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='6' rs:maybenull='false'/>
  </s:AttributeType>
  <s:extends type='rs:rowbase'/>
 </s:ElementType>
</s:Schema>
<rs:data>
 <z:row stor_id='6380' ord_num='6871' ord_date='1994-09-14T00:00:00' qty='5' payterms='Net 60' title_id='BU1032'/>
 <z:row stor_id='6380' ord_num='722a' ord_date='1994-09-13T00:00:00' qty='3' payterms='Net 60' title_id='PS2091'/>
 <z:row stor_id='7066' ord_num='A2976' ord_date='1993-05-24T00:00:00' qty='50' payterms='Net 30' title_id='PC8888'/>
 <z:row stor_id='7066' ord_num='QA7442.3' ord_date='1994-09-13T00:00:00' qty='75' payterms='ON invoice' 
title_id='PS2091'/>
 <z:row stor_id='7067' ord_num='D4482' ord_date='1994-09-14T00:00:00' qty='10' payterms='Net 60' title_id='PS2091'/>
 <z:row stor_id='7067' ord_num='P2121' ord_date='1992-06-15T00:00:00' qty='40' payterms='Net 30' title_id='TC3218'/>
 <z:row stor_id='7067' ord_num='P2121' ord_date='1992-06-15T00:00:00' qty='20' payterms='Net 30' title_id='TC4203'/>
 <z:row stor_id='7067' ord_num='P2121' ord_date='1992-06-15T00:00:00' qty='20' payterms='Net 30' title_id='TC7777'/>
 <z:row stor_id='7131' ord_num='N914008' ord_date='1994-09-14T00:00:00' qty='20' payterms='Net 30' title_id='PS2091'/>
 <z:row stor_id='7131' ord_num='N914014' ord_date='1994-09-14T00:00:00' qty='25' payterms='Net 30' title_id='MC3021'/>
 <z:row stor_id='7131' ord_num='P3087a' ord_date='1993-05-29T00:00:00' qty='20' payterms='Net 60' title_id='PS1372'/>
 <z:row stor_id='7131' ord_num='P3087a' ord_date='1993-05-29T00:00:00' qty='25' payterms='Net 60' title_id='PS2106'/>
 <z:row stor_id='7131' ord_num='P3087a' ord_date='1993-05-29T00:00:00' qty='15' payterms='Net 60' title_id='PS3333'/>
 <z:row stor_id='7131' ord_num='P3087a' ord_date='1993-05-29T00:00:00' qty='25' payterms='Net 60' title_id='PS7777'/>
 <z:row stor_id='7896' ord_num='QQ2299' ord_date='1993-10-28T00:00:00' qty='15' payterms='Net 60' title_id='BU7832'/>
 <z:row stor_id='7896' ord_num='TQ456' ord_date='1993-12-12T00:00:00' qty='10' payterms='Net 60' title_id='MC2222'/>
 <z:row stor_id='7896' ord_num='X999' ord_date='1993-02-21T00:00:00' qty='35' payterms='ON invoice' title_id='BU2075'/>
 <z:row stor_id='8042' ord_num='423LL922' ord_date='1994-09-14T00:00:00' qty='15' payterms='ON invoice' 
title_id='MC3021'/>
 <z:row stor_id='8042' ord_num='423LL930' ord_date='1994-09-14T00:00:00' qty='10' payterms='ON invoice' 
title_id='BU1032'/>
 <z:row stor_id='8042' ord_num='P723' ord_date='1993-03-11T00:00:00' qty='25' payterms='Net 30' title_id='BU1111'/>
 <z:row stor_id='8042' ord_num='QA879.1' ord_date='1993-05-22T00:00:00' qty='30' payterms='Net 30' title_id='PC1035'/>
</rs:data>
</xml>

Трансформация XSL-ADO2CDS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
 xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
 xmlns:rs='urn:schemas-microsoft-com:rowset'
 xmlns:z='#RowsetSchema'>
<xsl:output method="xml" encoding="windows-1251" omit-xml-declaration="no" indent="yes" media-type="text/xml"/>

 <xsl:template match="/">
  <DATAPACKET Version="2.0">
   <METADATA>
    <FIELDS>
     <xsl:for-each select="xml/s:Schema/s:ElementType/s:AttributeType">
      <FIELD>
       <xsl:attribute name="attrname">
        <xsl:value-of select="./@name"/>
       </xsl:attribute>
       <xsl:choose>
        <xsl:when test="./s:datatype/@dt:type = 'string'">
         <xsl:attribute name="fieldtype">
          <xsl:value-of select="./s:datatype/@dt:type"/>
         </xsl:attribute>
         <xsl:attribute name="WIDTH">
          <xsl:value-of select="./s:datatype/@dt:maxLength"/>
         </xsl:attribute>
        </xsl:when>
        <xsl:when test="./s:datatype/@dt:type = 'float'">
         <xsl:attribute name="fieldtype">
          r8
         </xsl:attribute>
        </xsl:when>
        <xsl:otherwise>
         <xsl:attribute name="fieldtype">
          <xsl:value-of select="./s:datatype/@dt:type"/>
         </xsl:attribute>
        </xsl:otherwise>
       </xsl:choose>
      </FIELD>
     </xsl:for-each>
    </FIELDS>
    <PARAMS/>
   </METADATA>
   <ROWDATA>
<!--    <xsl:for-each select="xml/rs:data/z:row">-->
     <ROW>
      <xsl:template match="*">
       <xsl:copy>
        <xsl:apply-templates select="@*" />
        <xsl:apply-templates/>
       </xsl:copy>
      </xsl:template>
<!--      <xsl:copy>
       <xsl:apply-templates select="./@*"/>
      </xsl:copy> -->
     </ROW>
<!--    </xsl:for-each> -->
   </ROWDATA>
  </DATAPACKET>
 </xsl:template>
</xsl:stylesheet>

Что должно получится XML-CDS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
  <?xml version="1.0" standalone="yes" ?>
- <DATAPACKET Version="2.0">
- <METADATA>
- <FIELDS>
  <FIELD attrname="stor_id" fieldtype="string" SUBTYPE="FixedChar" WIDTH="4" />
  <FIELD attrname="ord_num" fieldtype="string" WIDTH="20" />
  <FIELD attrname="ord_date" fieldtype="dateTime" />
  <FIELD attrname="qty" fieldtype="i2" />
  <FIELD attrname="payterms" fieldtype="string" WIDTH="12" />
  <FIELD attrname="title_id" fieldtype="string" WIDTH="6" />
  </FIELDS>
  <PARAMS />
  </METADATA>
- <ROWDATA>
  <ROW stor_id="6380" ord_num="6871" ord_date="19940914" qty="5" payterms="Net 60" title_id="BU1032" />
  <ROW stor_id="6380" ord_num="722a" ord_date="19940913" qty="3" payterms="Net 60" title_id="PS2091" />
  <ROW stor_id="7066" ord_num="A2976" ord_date="19930524" qty="50" payterms="Net 30" title_id="PC8888" />
  <ROW stor_id="7066" ord_num="QA7442.3" ord_date="19940913" qty="75" payterms="ON invoice" title_id="PS2091" />
  <ROW stor_id="7067" ord_num="D4482" ord_date="19940914" qty="10" payterms="Net 60" title_id="PS2091" />
  <ROW stor_id="7067" ord_num="P2121" ord_date="19920615" qty="40" payterms="Net 30" title_id="TC3218" />
  <ROW stor_id="7067" ord_num="P2121" ord_date="19920615" qty="20" payterms="Net 30" title_id="TC4203" />
  <ROW stor_id="7067" ord_num="P2121" ord_date="19920615" qty="20" payterms="Net 30" title_id="TC7777" />
  <ROW stor_id="7131" ord_num="N914008" ord_date="19940914" qty="20" payterms="Net 30" title_id="PS2091" />
  <ROW stor_id="7131" ord_num="N914014" ord_date="19940914" qty="25" payterms="Net 30" title_id="MC3021" />
  <ROW stor_id="7131" ord_num="P3087a" ord_date="19930529" qty="20" payterms="Net 60" title_id="PS1372" />
  <ROW stor_id="7131" ord_num="P3087a" ord_date="19930529" qty="25" payterms="Net 60" title_id="PS2106" />
  <ROW stor_id="7131" ord_num="P3087a" ord_date="19930529" qty="15" payterms="Net 60" title_id="PS3333" />
  <ROW stor_id="7131" ord_num="P3087a" ord_date="19930529" qty="25" payterms="Net 60" title_id="PS7777" />
  <ROW stor_id="7896" ord_num="QQ2299" ord_date="19931028" qty="15" payterms="Net 60" title_id="BU7832" />
  <ROW stor_id="7896" ord_num="TQ456" ord_date="19931212" qty="10" payterms="Net 60" title_id="MC2222" />
  <ROW stor_id="7896" ord_num="X999" ord_date="19930221" qty="35" payterms="ON invoice" title_id="BU2075" />
  <ROW stor_id="8042" ord_num="423LL922" ord_date="19940914" qty="15" payterms="ON invoice" title_id="MC3021" />
  <ROW stor_id="8042" ord_num="423LL930" ord_date="19940914" qty="10" payterms="ON invoice" title_id="BU1032" />
  <ROW stor_id="8042" ord_num="P723" ord_date="19930311" qty="25" payterms="Net 30" title_id="BU1111" />
  <ROW stor_id="8042" ord_num="QA879.1" ord_date="19930522" qty="30" payterms="Net 30" title_id="PC1035" />
  </ROWDATA>
  </DATAPACKET>

Что получается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
<?xml version="1.0" encoding="UTF-16"?>
<DATAPACKET Version="2.0" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" 
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" 
xmlns:z="#RowsetSchema">
 <METADATA>
  <FIELDS>
   <FIELD attrname="stor_id" fieldtype="string" WIDTH="4"/>
   <FIELD attrname="ord_num" fieldtype="string" WIDTH="20"/>
   <FIELD attrname="ord_date" fieldtype="dateTime"/>
   <FIELD attrname="qty" fieldtype="i2"/>
   <FIELD attrname="payterms" fieldtype="string" WIDTH="12"/>
   <FIELD attrname="title_id" fieldtype="string" WIDTH="6"/>
  </FIELDS>
  <PARAMS/>
 </METADATA>
 <ROWDATA>
  <ROW>
   <z:row> 638068711994 - 09 -14T00: 00 :005Net 60BU1032</z:row>
  </ROW>
  <ROW>
   <z:row>6380722a1994- 09 -13T00: 00 :003Net 60PS2091</z:row>
  </ROW>
  <ROW>
   <z:row>7066A29761993- 05 -24T00: 00 :0050Net 30PC8888</z:row>
  </ROW>
  <ROW>
   <z:row>7066QA7442. 31994 - 09 -13T00: 00 :0075ON invoicePS2091</z:row>
  </ROW>
  <ROW>
   <z:row>7067D44821994- 09 -14T00: 00 :0010Net 60PS2091</z:row>
  </ROW>
  <ROW>
   <z:row>7067P21211992- 06 -15T00: 00 :0040Net 30TC3218</z:row>
  </ROW>
  <ROW>
   <z:row>7067P21211992- 06 -15T00: 00 :0020Net 30TC4203</z:row>
  </ROW>
  <ROW>
   <z:row>7067P21211992- 06 -15T00: 00 :0020Net 30TC7777</z:row>
  </ROW>
  <ROW>
   <z:row>7131N9140081994- 09 -14T00: 00 :0020Net 30PS2091</z:row>
  </ROW>
  <ROW>
   <z:row>7131N9140141994- 09 -14T00: 00 :0025Net 30MC3021</z:row>
  </ROW>
  <ROW>
   <z:row>7131P3087a1993- 05 -29T00: 00 :0020Net 60PS1372</z:row>
  </ROW>
  <ROW>
   <z:row>7131P3087a1993- 05 -29T00: 00 :0025Net 60PS2106</z:row>
  </ROW>
  <ROW>
   <z:row>7131P3087a1993- 05 -29T00: 00 :0015Net 60PS3333</z:row>
  </ROW>
  <ROW>
   <z:row>7131P3087a1993- 05 -29T00: 00 :0025Net 60PS7777</z:row>
  </ROW>
  <ROW>
   <z:row>7896QQ22991993- 10 -28T00: 00 :0015Net 60BU7832</z:row>
  </ROW>
  <ROW>
   <z:row>7896TQ4561993- 12 -12T00: 00 :0010Net 60MC2222</z:row>
  </ROW>
  <ROW>
   <z:row>7896X9991993- 02 -21T00: 00 :0035ON invoiceBU2075</z:row>
  </ROW>
  <ROW>
   <z:row>8042423LL9221994- 09 -14T00: 00 :0015ON invoiceMC3021</z:row>
  </ROW>
  <ROW>
   <z:row>8042423LL9301994- 09 -14T00: 00 :0010ON invoiceBU1032</z:row>
  </ROW>
  <ROW>
   <z:row>8042P7231993- 03 -11T00: 00 :0025Net 30BU1111</z:row>
  </ROW>
  <ROW>
   <z:row>8042QA879. 11993 - 05 -22T00: 00 :0030Net 30PC1035</z:row>
  </ROW>
 </ROWDATA>
</DATAPACKET>

Скрипт трансформирования
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Set objXML = CreateObject("Msxml2.DOMDocument")
Set xsl = Createobject("MSXML2.DOMDocument")
Set XML = Createobject("MSXML2.DOMDocument")
' Загружаем полученный XML
XML.Async = False
XML.load("C:\transform\ADO_pubs.xml")

' Загружаем схему преобразования для получения данных из XML
xsl.Async = False
xsl.load("C:\transform\ADONET2CDS.xsl")

' Проводим трансформацию и получаем нужный XML
transformXML = XML.transformNode(xsl)
objXML.loadXML(transformXML)
objXML.save("C:\transform\rezult.xml")

Set objXML = Nothing
Set xsl = Nothing
Set XML = Nothing

MsgBox(transformXML)


Вообщем не получается скопировать атрибуты с данными из исходного ADO-XML в результат.
У меня не получилось ни узнать имя атрибута, что-бы добавить его в результат, ни просто скопировать набор атрибутов со
значениями.
Или есть ещё какой-то путь преобразования?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.10.2011, 16:15
    #37479049
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Да, хотелось-бы видеть результат без namespace'ов. Это можно сделать?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.10.2011, 18:12
    #37479317
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Игорь Горбонос,

как-то так, откуда брать SUBTYPE для FIELDS не понятно.
что касается неймспейсов - от них не избавитесь, они к рутовой ноде прилипнут, забейте не мешают.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" 
 xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
 xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
 xmlns:rs='urn:schemas-microsoft-com:rowset'
 xmlns:z='#RowsetSchema'
>
<xsl:output method="xml" encoding="windows-1251" omit-xml-declaration="no" indent="yes" media-type="text/xml"/>

 <xsl:template match="/">
 	<xsl:text disable-output-escaping="yes"><![CDATA[<plaintext>]]></xsl:text>
	<DATAPACKET Version="2.0">
		<METADATA>
			<FIELDS>
    			<xsl:apply-templates select="xml/s:Schema/s:ElementType/s:AttributeType" />
			</FIELDS>
			<PARAMS/>
		</METADATA>
		<ROWDATA>
			<xsl:apply-templates select="xml/rs:data/z:row" />
		</ROWDATA>
	</DATAPACKET>
</xsl:template>
<xsl:template match="s:AttributeType">
	<FIELD attrname="{@name}">
		<xsl:choose>
			<xsl:when test="s:datatype/@dt:type = 'string'">
				<xsl:attribute name="fieldtype">
					<xsl:value-of select="s:datatype/@dt:type" />
				</xsl:attribute>
				<xsl:attribute name="WIDTH">
					<xsl:value-of select="s:datatype/@dt:maxLength" />
				</xsl:attribute>
			</xsl:when>
			<xsl:when test="s:datatype/@dt:type = 'float'">
				<xsl:attribute name="fieldtype">
					<xsl:text>r8</xsl:text>
				</xsl:attribute>
			</xsl:when>
			<xsl:otherwise>
				<xsl:attribute name="fieldtype">
					<xsl:value-of select="s:datatype/@dt:type" />
				</xsl:attribute>
			</xsl:otherwise>
		</xsl:choose>
	</FIELD>
</xsl:template>
<xsl:template match="z:row">
	<ROW>
		<xsl:attribute name="ord_date">
			<xsl:value-of select="translate(substring-before( @ord_date, 'T' ), '-', '')" />
		</xsl:attribute>
		<xsl:copy-of select="@*[name()!='ord_date']" />
	</ROW>
</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
12.10.2011, 18:15
    #37479325
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
да, эта строка
<xsl:text disable-output-escaping="yes"><![CDATA[<plaintext>]]></xsl:text>
не нужна, это мне лень трансформер поднимать, браузером тестировал
...
Рейтинг: 0 / 0
12.10.2011, 18:32
    #37479350
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
> Автор: mage.lan

Спасибо, то что нужно. Теперь буду разбиратся.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.10.2011, 01:16
    #37479780
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Блин! Только сейчас дошло, что сделал не то что нужно
Нужно было трансформировать ADO.NET'овский XML.
Завтра буду разбираться.

mage.lan

Я не совсем, точнее совсем не понял как работает этот шаблон:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xsl:template match="z:row">
	<ROW>
		<xsl:attribute name="ord_date">
			<xsl:value-of select="translate(substring-before( @ord_date, 'T' ), '-', '')" />
		</xsl:attribute>
		<xsl:copy-of select="@*[name()!='ord_date']" />
	</ROW>
</xsl:template>
Можно его проговорить словами?
Спасибо
...
Рейтинг: 0 / 0
13.10.2011, 02:42
    #37479796
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Игорь Горбонос,

Словами? Хм.

Для z:row строим тег ROW, у которого атрибут ord_data вычисляется как строка до символа T, в которой все минусы заменяются на пустую строку. Остальные атрибуты копируются все, за исключением ord_data.

Какое место конкретно не понятно?
...
Рейтинг: 0 / 0
14.10.2011, 10:11
    #37481921
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Спасибо, теперь понял! Меня смутило вычисление подстроки, и я не сразу обратил внимание на разное представление
даты-времени.

А вообще не совсем понятно конструирование template. Линейным перебором, как я делал изначально, как-то понятнее. А
создание шаблона не совсем понятно.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.10.2011, 11:27
    #37482086
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование ADO-XML в ClientDataSet(CDS)-XML
Игорь Горбонос,

С этим всегда проблемы.

Дело в том, что трансформер "по умолчанию" обходит все теги XML и имеет собственные правила преобразования. Об этом почему-то все документации и преподаватели забывают сказать.

ИМХО, конструкция apply-templates + template - более читаемая, т.к. с for-each получаются безумные лесенки. По сути они одинаковы.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Преобразование ADO-XML в ClientDataSet(CDS)-XML / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]