任何人都可以理解 Ebay 的这种 XML 文件结构吗?
http://pages.ebay.co.uk/help/sell/export-structure.html
我不认为这是一个有效的模式,并且正在努力理解 XML 的结构。任何人都可以弄清楚吗?
我需要基于此构建一个导入脚本,但无法从任何地方获取正确的 XML 文件示例。
非常感谢
编辑
我发现它是一个 DTD 模式。因此,我需要以某种方式转换为 xsd。
任何人都可以理解 Ebay 的这种 XML 文件结构吗?
http://pages.ebay.co.uk/help/sell/export-structure.html
我不认为这是一个有效的模式,并且正在努力理解 XML 的结构。任何人都可以弄清楚吗?
我需要基于此构建一个导入脚本,但无法从任何地方获取正确的 XML 文件示例。
非常感谢
编辑
我发现它是一个 DTD 模式。因此,我需要以某种方式转换为 xsd。
您的链接指向的来自 ebay 的 DTD 无效,因此我不得不进行一些更正。
可能导致问题的一项更正是该Published
元素有两个声明。timestamp
我删除了有孩子的声明,因为timestamp
没有声明。
更正后的 DTD、生成的 XSD 和示例实例如下所示。
XSD 和示例实例是使用oXygen XML 编辑器(我强烈推荐)生成的。
这至少应该让你开始......
原始 DTD(固定)
<!ELEMENT ebay (StoreExport)>
<!ELEMENT StoreExport (Settings, Products)>
<!ELEMENT Settings (Published)>
<!-- The timestamp reflects when the Items have last changed. -->
<!ELEMENT Published EMPTY>
<!ATTLIST Published
timestamp CDATA #REQUIRED>
<!ELEMENT Products (Product*)>
<!ELEMENT Product (Description,
Caption,
Url,
EndTime,
Category,
EndNodeCategory,
BuyItNow?,
ListingFormat,
Orderable,
SiteCurrency,
Pricing,
Availability?,
Quantity,
GalleryPicture?,
Site,
Country)>
<!ATTLIST Product
Id CDATA #REQUIRED>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT Caption (#PCDATA)>
<!ELEMENT Url (#PCDATA)>
<!ELEMENT EndTime (#PCDATA)>
<!ELEMENT Category (#PCDATA)>
<!ELEMENT EndNodeCategory (#PCDATA)>
<!ELEMENT BuyItNow (#PCDATA)>
<!ELEMENT ListingFormat (#PCDATA)>
<!ELEMENT Orderable (#PCDATA)>
<!ELEMENT SiteCurrency (#PCDATA)>
<!ELEMENT Pricing (BasePrice,BuyItNowPrice?,ShippingCost?)>
<!ELEMENT Availability (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT GalleryPicture (#PCDATA)>
<!ELEMENT Site (#PCDATA)>
<!ELEMENT Country (#PCDATA)>
<!ELEMENT BasePrice (#PCDATA)>
<!ELEMENT BuyItNowPrice (#PCDATA)>
<!ELEMENT ShippingCost (#PCDATA)>
XSD (ebay.xsd)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ebay" type="StoreExport"/>
<xs:complexType name="StoreExport">
<xs:sequence>
<xs:element ref="StoreExport"/>
</xs:sequence>
</xs:complexType>
<xs:element name="StoreExport">
<xs:complexType>
<xs:sequence>
<xs:element ref="Settings"/>
<xs:element ref="Products"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Settings" type="Published"/>
<!-- The timestamp reflects when the Items have last changed. -->
<xs:complexType name="Published">
<xs:sequence>
<xs:element ref="Published"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Published">
<xs:complexType>
<xs:attributeGroup ref="attlist.Published"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="attlist.Published">
<xs:attribute name="timestamp" use="required"/>
</xs:attributeGroup>
<xs:element name="Products">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Product"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Product">
<xs:complexType>
<xs:sequence>
<xs:element ref="Description"/>
<xs:element ref="Caption"/>
<xs:element ref="Url"/>
<xs:element ref="EndTime"/>
<xs:element ref="Category"/>
<xs:element ref="EndNodeCategory"/>
<xs:element minOccurs="0" ref="BuyItNow"/>
<xs:element ref="ListingFormat"/>
<xs:element ref="Orderable"/>
<xs:element ref="SiteCurrency"/>
<xs:element ref="Pricing"/>
<xs:element minOccurs="0" ref="Availability"/>
<xs:element ref="Quantity"/>
<xs:element minOccurs="0" ref="GalleryPicture"/>
<xs:element ref="Site"/>
<xs:element ref="Country"/>
</xs:sequence>
<xs:attributeGroup ref="attlist.Product"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="attlist.Product">
<xs:attribute name="Id" use="required"/>
</xs:attributeGroup>
<xs:element name="Description" type="xs:string"/>
<xs:element name="Caption" type="xs:string"/>
<xs:element name="Url" type="xs:string"/>
<xs:element name="EndTime" type="xs:string"/>
<xs:element name="Category" type="xs:string"/>
<xs:element name="EndNodeCategory" type="xs:string"/>
<xs:element name="BuyItNow" type="xs:string"/>
<xs:element name="ListingFormat" type="xs:string"/>
<xs:element name="Orderable" type="xs:string"/>
<xs:element name="SiteCurrency" type="xs:string"/>
<xs:element name="Pricing">
<xs:complexType>
<xs:sequence>
<xs:element ref="BasePrice"/>
<xs:element minOccurs="0" ref="BuyItNowPrice"/>
<xs:element minOccurs="0" ref="ShippingCost"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Availability" type="xs:string"/>
<xs:element name="Quantity" type="xs:string"/>
<xs:element name="GalleryPicture" type="xs:string"/>
<xs:element name="Site" type="xs:string"/>
<xs:element name="Country" type="xs:string"/>
<xs:element name="BasePrice" type="xs:string"/>
<xs:element name="BuyItNowPrice" type="xs:string"/>
<xs:element name="ShippingCost" type="xs:string"/>
</xs:schema>
示例 XML 实例
<ebay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:/C:/ebay.xsd">
<StoreExport>
<Settings>
<Published timestamp="timestamp0"/>
</Settings>
<Products>
<Product Id="Id0">
<Description>Description0</Description>
<Caption>Caption0</Caption>
<Url>Url0</Url>
<EndTime>EndTime0</EndTime>
<Category>Category0</Category>
<EndNodeCategory>EndNodeCategory0</EndNodeCategory>
<BuyItNow>BuyItNow0</BuyItNow>
<ListingFormat>ListingFormat0</ListingFormat>
<Orderable>Orderable0</Orderable>
<SiteCurrency>SiteCurrency0</SiteCurrency>
<Pricing>
<BasePrice>BasePrice0</BasePrice>
<BuyItNowPrice>BuyItNowPrice0</BuyItNowPrice>
<ShippingCost>ShippingCost0</ShippingCost>
</Pricing>
<Availability>Availability0</Availability>
<Quantity>Quantity0</Quantity>
<GalleryPicture>GalleryPicture0</GalleryPicture>
<Site>Site0</Site>
<Country>Country0</Country>
</Product>
<Product Id="Id1">
<Description>Description1</Description>
<Caption>Caption1</Caption>
<Url>Url1</Url>
<EndTime>EndTime1</EndTime>
<Category>Category1</Category>
<EndNodeCategory>EndNodeCategory1</EndNodeCategory>
<BuyItNow>BuyItNow1</BuyItNow>
<ListingFormat>ListingFormat1</ListingFormat>
<Orderable>Orderable1</Orderable>
<SiteCurrency>SiteCurrency1</SiteCurrency>
<Pricing>
<BasePrice>BasePrice1</BasePrice>
<BuyItNowPrice>BuyItNowPrice1</BuyItNowPrice>
<ShippingCost>ShippingCost1</ShippingCost>
</Pricing>
<Availability>Availability1</Availability>
<Quantity>Quantity1</Quantity>
<GalleryPicture>GalleryPicture1</GalleryPicture>
<Site>Site1</Site>
<Country>Country1</Country>
</Product>
</Products>
</StoreExport>
</ebay>
James Clark 的trang是一个多格式模式转换器。如前所述,ebay 的 DTD 需要修复——“已发布”的两个元素声明;如果“已发布”的第一个适用,则“时间戳”没有元素声明;没有“PCDATA”声明值之类的东西(可能应该是“CDATA”);在应用任何转换器之前,没有“#CDATA”声明的内容(应该是“#PCDATA”)。