XSD файл для генерации кода, нужны подсказки - PullRequest
1 голос
/ 07 апреля 2011

Мне нужно сделать XSD-файл для XSD CodeSynthesis. Будет несколько схем для разных типов ответов. Как вы можете видеть в примере 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 голосов
/ 08 апреля 2011

Я использовал следующее для добавления поддержки атрибутов 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...