Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

AJBM

XSD

Mensagens Recomendadas

AJBM    29
AJBM

Boas!

Eu tenho este ficheiro xml.

<?xml version="1.0" encoding="UTF-8"?>
<store-invoice xmlns:store="http://www.store.com" number="1" year="2011">
Some Invoice text
<client nipc="123456789">
	Cristóvão Sousa
	<address xmlLang="pt">
  <street>Rua da Avenida Nº 71</street>
  LocalX, ConcelhoY
  <postal-Code number="4444-444" place="Porto"/>
  Portugal
 </address>
</client>
<line number="1">
	<product iva-tax="23">DVD-RAM</product>
	<quantity n="5"/>
	<price currency="euros">15</price>
</line>
<line number="2">
	<chip-product xmlns:chip="http://www.chip.com" iva-tax="23">
		RAM 2Gb
		<chip-code>MEM-RAM-0x00123</chip-code>
	</chip-product>
	<quantity n="10"/>
	<price currency="dollar">330</price>
</line>
</store-invoice>

E tenho que fazer um ficheiro xsd, para validar o xml

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="store-invoice">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="client">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="address">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="street"/>
									<xs:element name="postal-Code">
										<xs:complexType>
											<xs:attribute name="number" type="xs:string"/>
											<xs:attribute name="place" type="xs:string"/>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								<xs:attribute name="xmlLang"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="nipc"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line" maxOccurs="unbounded" minOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="quantity">
							<xs:complexType>
								<xs:attribute name="n" type="xs:integer"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="price">
							<xs:complexType>
								<xs:attribute name="currency" type="xs:string"/>
							</xs:complexType>
						</xs:element>
						<xs:choice>
							<xs:sequence>
								<xs:element name="product" maxOccurs="1" minOccurs="0">
									<xs:complexType>
										<xs:attribute name="iva-tax"/>
									</xs:complexType>
								</xs:element>
								<xs:element name="chip-product" maxOccurs="1" minOccurs="0">
									<xs:complexType>
										<xs:sequence>
											<xs:element name="chip-code"/>
										</xs:sequence>
										<xs:attribute name="xmlns-chip" type="xs:string"/>
										<xs:attribute name="iva-tax" type="xs:integer"/>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:choice>
					</xs:sequence>
					<xs:attribute name="number" type="xs:short"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="number" type="xs:integer"/>
		<xs:attribute name="year" type="xs:gYear"/>
	</xs:complexType>
</xs:element>

</xs:schema>

Ao validar tenho alguns erros um dos quais é

cvc-complex-type.2.3: Element 'address' cannot have character [children], because the type's content type is element-only.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nelsonr    333
nelsonr

Boas,

assim por alto...

o melhor é teres um elemento para o nome do cliente, bem como para o resto do conteúdo que está à "solta" (ex: LocalX, ConcelhoY,)

No elemento Line, está definido que vem o Quantity, Price e depois o Product ou chip-product, mas no XML tens no Line 1 o product primeiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AJBM    29
AJBM

O ficheiro xml foi me dado assim penso que não posso alterar o ficheiro xml, ou seja, o conteúdo que esta a solta deve ter que estar a solta.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AJBM    29
AJBM

Ja consegui resolver quase todos os erros, so me falta resolver um

cvc-complex-type.3.2.2: Attribute 'store:noNamespaceSchemaLocation' is not allowed to appear in element 'store-invoice'.

<store-invoice xmlns:store="http://www.store.com" store:noNamespaceSchemaLocation="ex2Ficha5.xsd" number="145" year="2011"  >
   Some Invoice text
   <client nipc="123456789">
    Cristóvão Sousa
    <address xmlLang="pt"><street>Rua da Avenida Nº 71</street>
LocalX, ConcelhoY
<postal-Code number="4444-444" place="Porto"/>Portugal</address>
   </client>
   <line number="1">
    <quantity n="5"/>
    <price currency="euros">15</price>
    <product iva-tax="23">DVD-RAM</product>


   </line>
   <line number="2">
    <quantity n="10"/>
    <price currency="dollar">330</price>
    <chip-product xmlns:chip="http://www.chip.com" iva-tax="23">
	    RAM 2Gb
	    <chip-code>MEM-RAM-0x00123</chip-code>
    </chip-product>

   </line>
</store-invoice>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.