2016-05-09 3 views
0

У меня есть XML-объект, как это,Схема проверки поля XHTML

a:news-article xmlns:c="http://abc/core" xmlns:f="http://abc/fields" xmlns:a="http://abc/assets" xmlns:r="http://abc/refdata"> 
    <c:id>xyz</c:id> 
    <c:type>asset</c:type> 
    <c:created-on>2016-03-17T08:26:27.764Z</c:created-on> 
    <c:released-on>1985-11-03T00:00:00Z</c:released-on> 
    <c:expires-on>2009-12-12T00:00:00Z</c:expires-on> 
    <f:short-headline> 
    <c:content><c:l10n xml:lang="en"> 
    <p> 
     Carbide technology for South Korean project 
    </p> 
     </c:l10n></c:content> 
    <c:resources/> 
    </f:short-headline> 
</a:news-article> 

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

ответ

1

Для каждого пространства имен вам понадобятся отдельные схемы.

В XSD для «http://abc/core» пространства имен вы можете захотеть шаблон, чтобы проверить, если содержание элемента не пусто:

<xs:element name="id"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:pattern value="\S+"/> 
       </xs:restriction> 
      </xs:simpleType> 
    </xs:element> 

Затем нужно импортировать схему в ваш «корень» схемы (в вашем примере я предполагаю, что "а:" префикс представляет корневую схему), как это:

<xs:import namespace="http://abc/core" 

SchemaLocation = "core.xsd" />

и, наконец, ссылаться на элемент из иностранного пространства имен в нужном месте:

<xs:element name="authors"> 
     <xs:complexType> 
      <xs:sequence>news-article 
      <xs:element ref="c:id"/> 
      <xs:element ref="c:type"/> 
      <!-- ... --> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

Если вы хотите, чтобы убедиться, что p элемент не пуст, то нужно написать схему самостоятельно, следуя той же схеме, как указано выше, - объявить о нераспространении -пустой шаблон для p и обратитесь к нему в схеме для элемента c:l10n.

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