2016-08-08 2 views
0

Я хотел бы спросить, как атрибут xmlns можно добавить к элементу xsd.изменить значение xmlns на элемент в xmlns

Выход должен быть что-то похожее на это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<asn> 
    <itemcode id="ITM0002212"> 
     <serialno xmlns="1231123321231600000"> 
      <msn/> 
      <msisdn>123456789</msisdn> 
     </serialno>    
     <serialno xmlns="1231123321231700000"> 
      <msn/> 
      <msisdn>123456788</msisdn> 
     </serialno> 
     <serialno xmlns="1231123321231800000"> 
      <msn/> 
      <msisdn>123456787</msisdn> 
     </serialno> 
     <serialno xmlns="1231123321231900000"> 
      <msn/> 
      <msisdn>123456786</msisdn> 
     </serialno> 
    </itemcode> 
</asn> 

Я пытался использовать следующую XSD ниже, но приложение не позволяет атрибут Xmlns:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
<xs:element name="asn"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="itemcode"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="serialno"> 
          <xs:complexType> 
           <xs:sequence> 
            <element name="nac" type="xs:string" /> 
            <element name="msisdn" type="xs:string" /> 
           </xs:sequence> 
           <attribute name="xmlns" type="xs:string"/> 
          </xs:complexType> 
         </xs:element> 
        </xs:sequence> 
        <xs:attribute name="id" type="xs:string"/> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Спасибо, Райан

ответ

0

xmlns атрибуты не являются атрибутами. Они разрешаются парсером XML, чтобы объявить пространство имен по умолчанию, в котором serialno, msn и msisdn в прямом эфире. Следовательно, XML-схема фактически не видит их в виде атрибутов. В общем, XML запрещает и резервирует имена атрибутов, начинающиеся с xml в любой комбинации.

Однако, глядя на документ XML при условии, что значения, связанные с xmlns не похожи на ссылки URI, и каждый serialno имеет свою собственную xmlns значение, которое редко: один должен обеспечить отдельный файл схемы для каждого из них этих пространств имен. Это может указывать на то, что это или должно быть поля id или настраиваемые поля, а не поля xmlns.

+0

Привет, может быть правдой, что xmlns в serialno является значением id. Просто я хочу, чтобы результат был xmlns. Я попытался изменить имя атрибута с 'xmlns' на' xmlns1' (для тестирования) и принятое приложение (ms excel source). данные поступают из таблицы Excel. Спасибо –

+0

Спасибо за ваши отзывы, Райан, я боюсь, это выглядит как необычное в лучшем случае, нестандартное в худшем случае использование атрибута 'xmlns'. Есть ли какая-либо документация, которая объясняет специфику вашего usecase? Ожидается, что приложение «xmlns1» не будет отклонено приложением. Идея резервирования этих имен заключается в том, что (даже если это становится маловероятным) W3C оставляет за собой право в будущем указывать семантику для 'xmlns1' или других, как это было для' xmlns', что может нарушить любое существующее использование , –

+0

очень необычно. Я действительно не могу предоставить вам подробные сведения о прецеденте, кроме того, что мне была поручена задача создания xml с заданным форматом, похожим на вывод xml по моему вопросу. Данные будут получены из файла excel, поэтому я попытался использовать экспорт в xml-функцию excel, создав XSD. Я действительно новичок в xsd, поэтому мне было интересно, если кто-то столкнулся с моей ситуацией и придумал решение для xsd. благодаря –

Смежные вопросы