как я могу определить xsd файл, который позволяет неизвестный (подстановочный знак) элементы?

Я получаю сообщение XML с элементами имени неизвестной переменной... то есть, они не предопределены...

Я только знаю, что может быть 0 или больше из тех элементов, вперед с некоторым другим, которые обязательны...

например,


    my service
    my resource
    update
    
      value1
      value2
      value3
    

то есть, я не знаю то, что будет передано как "параметры", я только знаю, что будет 0 или больше элементов со значением, никакое более глубокое позволенное вложение тега....

Я думал о чем-то как





  
    
      
      
      
      
        
          
        
      
    
  



конечно, твердая часть


действительно ли возможно сделать sucha вещь?

как я могу определить xsd файл, который проверяет такое сообщение?

--

Я проверил w3c ссылку в

http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#NCName

и это говорит:

"· лексическое пространство · из NCName набор всех строк который · соответствие · производство NCName [Пространства имен в XML]".

так что это означает?

помимо... Вас мог рекомендовать мне некоторый простой способ протестировать соответствие xsd определению?

13
задан zx485 5 November 2019 в 13:47
поделиться

2 ответа

Вам нужна частица с подстановочными знаками, подробности см. http://www.w3.org/TR/xmlschema-1/#Wildcards

Для этого вы можете использовать xs: any. Обратите внимание, что xs: element и xs: any нельзя размещать непосредственно внутри xs: complexType. Вам нужен контейнер, такой как последовательность или выбор.

Ниже приведена допустимая схема, которая обрабатывает подстановочные знаки:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="service" type="xs:string"/>
        <xs:element name="resource" type="xs:string"/>
        <xs:element name="action" type="xs:string"/>
        <xs:element name="parameters">
          <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
              <xs:any processContents="lax"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>
20
ответ дан 1 December 2019 в 22:40
поделиться

Попробуйте следующее:

<xs:element name="parameters">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:any processContents="lax"></xs:any>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
1
ответ дан 1 December 2019 в 22:40
поделиться