2016-01-12 1 views
0

Я регулярно экспортирую данные из Access. До сих пор я использовал для экспорта и вручную редактировал некоторые теги, чтобы настроить его на потребности Клиентов. В последнее время я обнаружил, что существует возможность использовать XSL в качестве шаблона преобразования.XSL-преобразование Выход MS Access 2007

Я еще новичок, когда приходит к XSL, но удалось создать что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="dataroot/Kwerenda_x0020_Nota_x0020_Kredytowa"> 
    <xsl:element name="Faktury_od_nas"> 
     <xsl:apply-templates /> 
    </xsl:element> 
</xsl:template> 

</xsl:stylesheet> 

Обычно он работает нормально, но:
1. Обычно, когда я экспортировать данные, которые он дает мне каждый тег в новый line, теперь он делится только тегом, который я изменил.
2. Я не знаю, как переименовать dataroot. Я попытался скопировать/вставить тот же код, но затем я получаю DataRoot каждый раз появляется Faktury_od_nas ...

преобразованные данные выборки:

<dataroot generated="2016-01-12T13:54:11" xmlns:od="urn:schemas-microsoft-com:officedata"><Faktury_od_nas><No>1</No><InvoiceDate>20150715</InvoiceDate><InvoiceNumber>12345</InvoiceNumber><CustVATNumber>LT100004645417</CustVATNumber><E100customerKey>65-92</E100customerKey><CustomerName>Client_name</CustomerName><InvoiceCountry>BE</InvoiceCountry><VATpersent>21</VATpersent><VATBasis>106,36</VATBasis><VATamount>22,34</VATamount><Currency>EUR</Currency><VAT_x0020_recovery_x0020_fee_x0020_rate_x0020__x0028__x0025__x0029_>7.5</VAT_x0020_recovery_x0020_fee_x0020_rate_x0020__x0028__x0025__x0029_><Service_x0020_Type>Express</Service_x0020_Type><InvoiceScanFileName>scan_name</InvoiceScanFileName> 
    </Faktury_od_nas></dararoot> 

Желаемая образец данных:

<Faktura> 
<Faktury_od_nas> 
<No>1</No> 
<InvoiceDate>20150715</InvoiceDate> 
<InvoiceNumber>12345</InvoiceNumber> 
<CustVATNumber>LT100004645417</CustVATNumber> 
<E100customerKey>65-92</E100customerKey> 
<CustomerName>Client_name</CustomerName> 
<InvoiceCountry>BE</InvoiceCountry> 
<VATpersent>21</VATpersent> 
<VATBasis>106,36</VATBasis> 
<VATamount>22,34</VATamount> 
<Currency>EUR</Currency> 
<VAT_x0020_recovery_x0020_fee_x0020_rate_x0020__x0028__x0025__x0029_>7.5</VAT_x0020_recovery_x0020_fee_x0020_rate_x0020__x0028__x0025__x0029_> 
<Service_x0020_Type>Express</Service_x0020_Type> 
<InvoiceScanFileName>scan_name</InvoiceScanFileName> 
</Faktury_od_nas> 
</Faktura> 

Я признателен за любую помощь.

Edit:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> 

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
     <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="dataroot"> 
    <Faktura> 
     <xsl:apply-templates /> 
    </Faktura> 
</xsl:template> 

<xsl:template match="Kwerenda_x0020_Nota_x0020_Kredytowa"> 
    <Faktury_od_nas> 
     <xsl:apply-templates /> 
    </Faktury_od_nas> 
</xsl:template> 

</xsl:stylesheet> 
+0

Ваш желаемый результат не хорошо сформирован XML! –

ответ

2

Это поможет увидеть исходный XML, но я полагаю, вы могли бы использовать:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
     <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="dataroot"> 
    <Faktura> 
     <xsl:apply-templates /> 
    </Faktura> 
</xsl:template> 

<xsl:template match="Kwerenda_x0020_Nota_x0020_Kredytowa"> 
    <Faktury_od_nas> 
     <xsl:apply-templates /> 
    </Faktury_od_nas> 
</xsl:template> 

</xsl:stylesheet> 
+0

Практически там. Как вы можете видеть в «преобразованных образцах данных», 'dataroot' содержит дополнительную информацию:' generate = "" и 'xmlns: od =" "'. Когда я применяю свой код, я получаю в каждом дочернем файле 'Faktury_od_nas' информацию' xmlns: od = "" '. Его следует просто стереть с 'dataroot'. – lowak

+0

@lowak Попробуйте сейчас. –

+0

Осталась только одна маленькая деталь. Первая строка теперь выглядит так: '', Она пропускает информацию о кодировке: ''. Есть ли шанс установить это? – lowak