背景:我沒有太多的XML經驗。我有一個開箱即用的應用程序,它使用xml模式和模板。這個過程是這樣的:創建符合xsl和xslt文件中某些規則的XML文件?
- 我應該把正確的格式,並命名爲XML文件中的「下載/ Data」文件夾
- 程序檢測到「下載/數據」文件夾中的文件,讀取它,更新數據庫在xslt文件中使用代碼。 Xml文件被移入「下載/處理」文件夾。
- 如果原始xml文件格式不正確,則將其移入「下載/無效」文件夾。
問題:我需要創建xml文件,該文件將通過格式正確且將更新數據庫的驗證。 我現在的文件名是vattaxes.xml,看起來像這樣:
<?xml version="1.0"?>
<VATTax>
<ProcessingDateTime>
</ProcessingDateTime>
<AdditionalInfo>
</AdditionalInfo>
<Header>
<VERSION>5.0.1.7</VERSION>
<StoreId>1</StoreId>
<CreationDate>20140903</CreationDate>
<CreationTime>080636</CreationTime>
<CreatedOn>TPVIRTUAL-PC</CreatedOn>
<Provider>TP.net</Provider>
<Customer>
</Customer>
<Subject>StoreConfigBase</Subject>
<TruncateFields>0</TruncateFields>
</Header>
<createDate>20140903</createDate>
<createTime>082056</createTime>
<actionCode>2</actionCode>
<actionDescription>ADD</actionDescription>
<VATCode>5</VATCode>
<VATLongDescription>20% tax</VATLongDescription>
<VATShortDescription>20% tax</VATShortDescription>
<VATRate>20</VATRate>
<VATStartDate>2014-09-02</VATStartDate>
<VATEndDate>2015-09-03</VATEndDate>
<lastUser>1</lastUser>
</VATTax>
,檢查我的文件是否有效這個樣子的,被命名爲GV5_VAT.xsd XSD文件:
<?xml version="1.0"?>
<xsd:schema xmlns="http://www.gold-solutions.com/GoldSchemas"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:gold="http://www.gold-solutions.com/GoldSchemas"
targetNamespace="http://www.gold-solutions.com/GoldSchemas"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:annotation>
<xsd:documentation xml:lang="en">
G.O.L.D. V5 TVAs schema V1.0
Copyright Aldata 2005
</xsd:documentation>
</xsd:annotation>
<xsd:element name="vattaxes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="VATTax" type="VATTaxType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="processid" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="VATTaxType">
<xsd:sequence>
<xsd:element name="header">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="createDate" type="xsd:date"/>
<xsd:element name="createTime" type="xsd:dateTime"/>
<xsd:element name="actionCode" type ="xsd:integer"/>
<xsd:element name="actionDescription" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="VATCode" type="xsd:integer"/>
<xsd:element name="VATLongDescription" type="xsd:string"/>
<xsd:element name="VATShortDescription" type="xsd:string"/>
<xsd:element name="VATSystemCode" type="xsd:integer"/>
<xsd:element name="VATSystemDescription" type="xsd:string"/>
<xsd:element name="VATRate" type="xsd:decimal"/>
<xsd:element name="VATStartDate" type="xsd:date"/>
<xsd:element name="VATEndDate" type="xsd:date"/>
<xsd:element name="lastUser" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我也有GV5_VAT.xsl
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gold="http://www.gold-solutions.com/GoldSchemas"
exclude-result-prefixes="gold">
<xsl:output method="xml" indent="yes" encoding="utf-8" />
<!-- Include the header -->
<xsl:include
href="GV5_Base.xsl" />
<!--
Template: match the document (processing starts here)
-->
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<!--
Template: match the root element
-->
<xsl:template name="vattaxes" match="/gold:vattaxes" >
<UpdateDB>
<xsl:call-template name="BuildHeader" />
<xsl:for-each select="./gold:VATTax">
<xsl:call-template name="vattax" />
</xsl:for-each>
</UpdateDB>
</xsl:template>
<!--
Template: match the single nodeRelation element
-->
<xsl:template name="vattax" >
<Transaction>
<!-- Not used elements : -->
<!--
<xsd:element name="VATSystemCode" type="xsd:integer"/>
<xsd:element name="VATSystemDescription" type="xsd:string"/>
<xsd:element name="lastUser" type="xsd:string"/>
-->
<xsl:variable name="szPrintCode" select="./gold:VATShortDescription" />
<xsl:variable name="szExternalID" select="./gold:VATCode" />
<xsl:variable name="szName" select="./gold:VATLongDescription" />
<xsl:variable name="dTaxPercent" select="./gold:VATRate" />
<xsl:variable name="szEffectiveDate" select="concat(concat(substring (./gold:VATStartDate,1,4), substring(./gold:VATStartDate,6,2)), substring(./gold:VATStartDate,9,2))" />
<xsl:variable name="szExpirationDate" select="concat(concat(substring(./gold:VATEndDate,1,4), substring(./gold:VATEndDate,6,2)), substring(./gold:VATEndDate,9,2))" />
<!-- Operation selector -->
<xsl:variable name="actionCode" select="./gold:ACTIONCODE" />
<xsl:choose>
<!-- from here changes for release 3.5 T.S. 05.02.2008 mer-X Software GmbH -->
<!-- Insert -->
<xsl:when test="$actionCode = '2'">
*** sql inserts below***
,並提到GV5_Base.xsl
以上這是要求他們所有的文件是相當簡單:
<?xml version="1.0" encoding="utf-8" ?>
<PARAMETERS>
<Conversion>
<!--<DownloadFolder>C:\siirto\tuotanto\pos\in</DownloadFolder>-->
<Assembly>not important</Assembly>
<Class>not important</Class>
<Mappings>
<Mapping name="VAT" >
<sourceschema validate="true">GV5_VAT.xsd</sourceschema>
<sourceidentifier>/*[local-name() = 'vattaxes' and namespace-uri() = 'http://www.gold-solutions.com/GoldSchemas']</sourceidentifier>
<xsltfile encoding="UTF-8">GV5_VAT.xsl</xsltfile>
</Mapping>
</Mappings>
</Conversion>
</PARAMETERS>
所以,我應該怎麼名稱進入下載/ Data文件夾的.xml文件,它應該如何看裏面?
尋求黃金解決方案的支持。你也可以從一個示例xml開始,請參閱http://stackoverflow.com/questions/17106/how-to-generate-sample-xml-documents-from-their-dtd-or-xsd – Kokkie 2014-09-03 07:51:25
@Kokkie,非常感謝你很多,該文件正在驗證。它仍然沒有得到正確處理,但我認爲你已經指出了我的正確方向。 – jo1storm 2014-09-03 10:12:10