1

任何人都可以理解 Ebay 的这种 XML 文件结构吗?

http://pages.ebay.co.uk/help/sell/export-structure.html

我不认为这是一个有效的模式,并且正在努力理解 XML 的结构。任何人都可以弄清楚吗?

我需要基于此构建一个导入脚本,但无法从任何地方获取正确的 XML 文件示例。

非常感谢

编辑

我发现它是一个 DTD 模式。因此,我需要以某种方式转换为 xsd。

4

2 回答 2

1

您的链接指向的来自 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>
于 2012-11-23T18:27:19.730 回答
0

James Clark 的trang是一个多格式模式转换器。如前所述,ebay 的 DTD 需要修复——“已发布”的两个元素声明;如果“已发布”的第一个适用,则“时间戳”没有元素声明;没有“PCDATA”声明值之类的东西(可能应该是“CDATA”);在应用任何转换器之前,没有“#CDATA”声明的内容(应该是“#PCDATA”)。

于 2012-12-20T13:43:51.887 回答