2013-12-09 2 views
1

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

Это мой XML

<?xml version="1.0" encoding="UTF-8"?>  
     <mail> 
      <portalname>rezbase_v3</portalname> 
      <portalcolor1>'#b0b8da'</portalcolor1> 
      <portalcolor2>#0a1e75</portalcolor2> 
      <portalcolor3> '#333333'</portalcolor3> 
      <portalcolor4> '#e7eaf7'</portalcolor4> 
      <portalcolorfont1> '#bcc9ff'</portalcolorfont1> 
      <portalcolorfont2> '#000000'</portalcolorfont2>  
     </mail> 

и у меня есть отдельная XSD для портальных стилей, который выглядит так (StyleApplyerDetailsBuilder.xsd)

 <?xml version="1.0" encoding="ISO-8859-1" ?> 
     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://NamespaceTest.com/StyleApplyerDetailsBuilder" elementFormDefault="qualified" > 
    <xs:group name="colors"> 
     <xs:sequence> 
     <xs:element name="portalcolor1" type="xs:string"/> 
     <xs:element name="portalcolor2" type="xs:string"/> 
     <xs:element name="portalcolor3" type="xs:string"/> 
     <xs:element name="portalcolor4" type="xs:string"/> 
     <xs:element name="portalcolorfont1" type="xs:string"/> 
     <xs:element name="portalcolorfont2" type="xs:string"/> 
     </xs:sequence> 
    </xs:group> 
      </xs:schema> 

и мой основной XSD что-то вроде этого (магистральный. XSD)

<?xml version="1.0" encoding="ISO-8859-1" ?> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:include schemaLocation="../../xsdFactory/commons/StyleApplyerDetailsBuilder.xsd"/> 
    <xs:element name="mail"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element type="xs:string" name="portalname"></xs:element> 
      <!-- I need to import my other xsd(StyleApplyerDetailsBuilder) to here so I can validate my xml --> 
     <xs:group ref="colors" maxOccurs="unbounded" minOccurs="1"/>   
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:schema> 

мне нужен импорт StyleApplyerDetailsBuilder.xsd в main.xsd и подтвердите вышеуказанный xml.

+1

Вы пытались использовать 'XSD: include'? См. Http://stackoverflow.com/questions/332792/can-i-have-one-xml-schema-xsd-include-another-xml-schema –

ответ

1

Вы можете использовать

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:include schemaLocation="StyleApplyerDetailsBuilder.xsd"/> 
    <xs:element name="mail"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element type="xs:string" name="portalname"></xs:element> 
     <!-- I need to import my other xsd(StyleApplyerDetailsBuilder) to here so I can validate my xml --> 
     <xs:element ref="portalcolor1"/> 
     <xs:element ref="portalcolor2"/> 
     <!-- reference the other elements here --> 

     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Обычно вы бы определить группу и ссылку, например в таблице стилей, которые будут включены вы определяете

<xs:group name="colors"> 
    <xs:sequence> 
    <xs:element name="portalcolor1" type="xs:string"/> 
    <xs:element name="portalcolor2" type="xs:string"/> 
    <xs:element name="portalcolor3" type="xs:string"/> 
    <xs:element name="portalcolor4" type="xs:string"/> 
    <xs:element name="portalcolorfont1" type="xs:string"/> 
    <xs:element name="portalcolorfont2" type="xs:string"/> 
    </xs:sequence> 
</xs:group> 

затем использовать включаемый, как показано, но вместо того, чтобы все ссылки на различные элементы, которые вы используете

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:include schemaLocation="StyleApplyerDetailsBuilder.xsd"/> 
    <xs:element name="mail"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element type="xs:string" name="portalname"></xs:element> 
     <!-- I need to import my other xsd(StyleApplyerDetailsBuilder) to here so I can validate my xml --> 
     <xs:group ref="colors"/>   
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
+0

есть ли какой-либо другой способ, не давая всех ссылок, предоставляя единый доступ с доступом на под узлы – RezgHansa

+1

@RezgHansa, я добавил пример кода, определяющий и ссылающийся на группу. –

+0

Привет, мартинг. Я изменил вопрос и пробовал свой путь, но он дал мне некоторую ошибку, подобную этой «org.xml.sax.SAXParseException; systemId: file: /rezsystem/rezsystem_hansa/jboss-4.0.3SP1/server/default/deploy/ RezgEmailService.war/xsd/xsdFactory/commons/StyleApplyerDetailsBuilder.xsd; lineNumber: 2; columnNumber: 158; src-include.2.1: Целевое пространство имен ссылочной схемы, в настоящее время «http://NamespaceTest.com/StyleApplyerDetailsBuilder», должно быть идентичный таковой схемы включения, в настоящее время «нуль». « – RezgHansa

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