Как указать элемент без определенного имени - PullRequest
0 голосов
/ 03 апреля 2012

Мне нужно написать схему XML для моего файла XML. Мой файл XML:

<?xml version="1.0" encoding="utf-8"?>
<styles>

  <style name="p">
    <text-indent>25px</text-indent>
  </style>

  <style name="td">
    <border>solid 2px</border>
    <border-color>Black</border-color>
    <padding-left>5px</padding-left>
  </style>

  <style name="p.withoutRedLine">
    <text-indent>0px</text-indent>
  </style>

</styles>

Каждый элемент 'style' может иметь элементы с любыми именами.

Я написал следующую XML-схему (проблемы определены в комментариях к коду):

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
    xmlns="http://www.mia-orbis.com/2012/XMLSchema/styles"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:complexType name="style">
    <xsd:sequence minOccurs="1" maxOccurs="1">
      <!--Error in it place (I don't need to specify value 
      of attribute 'name', but from me it demand):-->
      <xsd:element type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>    
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:ID" use="required"/>
  </xsd:complexType>

  <xsd:element name="styles">
    <xsd:complexType>
      <xsd:sequence minOccurs="1" maxOccurs="1">
        <xsd:element name="style" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

1 Ответ

0 голосов
/ 03 апреля 2012

Вам необходимо использовать xsd: any:

<?xml version="1.0" encoding="utf-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:complexType name="style"> 
        <xsd:sequence> 
            <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip"/>
        </xsd:sequence> 
        <xsd:attribute name="name" type="xsd:ID" use="required"/> 
    </xsd:complexType> 
    <xsd:element name="styles"> 
        <xsd:complexType> 
            <xsd:sequence> 
                <xsd:element name="style" minOccurs="0" maxOccurs="unbounded" type="style"/> 
            </xsd:sequence> 
        </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

Я исправил вашу схему: удалил пространство имен по умолчанию, установил тип элемента style и т. Д.

Если вы уже согласились использовать xsd: any, может оказаться полезным определить, что вы знаете, и оставить xsd: any для чего-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...