用于代码生成的XSD文件,需要提示

时间:2011-04-07 12:35:36

标签: xml xsd

我需要为CodeSynthesis的XSD创建一个xsd文件。 不同的响应类型将有多个模式。 正如您在示例XML文件中看到的,一些元素具有type属性,而一些元素具有nil属性。这些属性不提供解析信息,我已经知道类型并在xsd文件中正确设置它们。除此之外,我不知道哪些元素是可以收费的。可以在xsd模式中跳过这些属性,或者我应该为每个元素编写:

<xsd:complexType>
    <xsd:attribute name="type" type="TypeAttr" fixed="integer"/>
    <xsd:attribute ref="nil"/>
</xsd:complexType>

其中

<xsd:attribute name="nil" type="xsd:boolean"/>

这是XML文件之一:

<?xml version="1.0" encoding="UTF-8"?>
<account>
  <access-key>bla-bla-bla</access-key>
  <billing-error-date type="date" nil="true"></billing-error-date>
  <default-ticket-report-id type="integer">0</default-ticket-report-id>
  <default-time-zone nil="true"></default-time-zone>
  <description nil="true"></description>
  <disk-usage type="integer">38048</disk-usage>
  <flagged-for-billing-error type="boolean">false</flagged-for-billing-error>
  <force-ssl type="boolean">false</force-ssl>
  <id type="integer">1</id>
  <plan>micro</plan>
  <subdomain>companyname</subdomain>
  <text-markup>markdown,textile,plain</text-markup>
  <title>companyname</title>
  <features>
    <attachments>true</attachments>
    <ssl>false</ssl>
    <storage>512</storage>
    <time_tracking>false</time_tracking>
    <max_people>10</max_people>
    <max_pages>99999</max_pages>
    <beta>false</beta>
  </features>
  <notebook_pages>0</notebook_pages>
  <created-at>2011-02-16T13:50:09Z</created-at>
  <updated-at>2011-04-07T09:11:10Z</updated-at>
</account>

1 个答案:

答案 0 :(得分:0)

我使用以下内容添加type和nil属性支持。

<xsd:complexType name="UString">
  <xsd:simpleContent>
    <xsd:extension base="xsd:string">
      <xsd:attribute name="type" type="TypeAttr" fixed="string" use="optional"/>
      <xsd:attribute name="nil" type="xsd:boolean" use="optional"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

<xsd:complexType name="UInteger">
  <xsd:simpleContent>
    <xsd:extension base="xsd:integer">
      <xsd:attribute name="type" type="TypeAttr" fixed="integer" use="optional"/>
      <xsd:attribute name="nil" type="xsd:boolean" use="optional"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

<xsd:simpleType name="TypeAttr">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="datetime"/>
    <xsd:enumeration value="integer"/>
    <xsd:enumeration value="boolean"/>
  </xsd:restriction>
</xsd:simpleType>