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

Blackie

Ajuda XML / XSD

Mensagens Recomendadas

Blackie    0
Blackie

Boa tarde,

Tenho um XML e um XSD que valida o XML. Até aqui tudo bem.

Na estrutura do XML tenho, entre outras, duas tags, designadamente: <Jogadores> e <Clubes> (aqui coloco um excerto)

<Jogadores>
					<jogador>
							   <id>J1</id>
							   <nome>Manuel</nome> 							
							   <morada>Rua de Cima</morada>
								------
								------
							   <clube>C1</clube>
					</ jogador >
		< Jogadores >  


<Clubes>
					<clube>
							   <id>C1</id>
							   <nome>Porto</nome> 								
							   <morada>Rua de Baixo</morada>
								------
								------
					</ clube >
		< Clubes >  

No XSD pretendo usar "refs", ou seja, quero referenciar no jogador o clube a que ele pertence.

Não consegui fazer isto porque o xsd deixa de validar. Alguém pode fazer o favor de dar alguma ajuda?

Obg. Blackie

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Blackie    0
Blackie

Peço desculpa porque fazia todo o sentido ter colocado, no mínimo, um excerto do XSD. Vai então agora.

Reconfirmando: a minha dificuldade está, pelo menos até ao momento, colocar os ID / IDREF na forma e no sítio correto, em substituição dos id que tenho.

<xs:schema attributeFormDefault="unqualified" ……….

<xs:element name="futebol">
<xs:complexType>
  <xs:sequence>

	<xs:element name="Associacao">
	  <xs:complexType>
		<xs:sequence>
		  <xs:element type="xs:string" name="nome"/>
		  <xs:element type="xs:string" name="logo"/>																														
				  …… 									  
				  …… 		  
	</xs:element>

	<xs:element name="Jogadores">
	  <xs:complexType>
		<xs:sequence>
		  <xs:element name="jogador" maxOccurs="unbounded" minOccurs="0">
			<xs:complexType>
			  <xs:sequence>
			  <xs:element name="id">   <!--   id  -->
			 <xs:simpleType>
			 <xs:restriction base="xs:string"> 															  
			 <xs:pattern value="A[1-9][0-9]*"/>
			 </xs:restriction>
			 </xs:simpleType>						
			 </xs:element>										   											  

				<xs:element name="identidade">
				  <xs:complexType>
					<xs:sequence>
					  <xs:element type="xs:string" name="nome"/>
					  <xs:element type="xs:string" name="apelido"/>
					  <xs:element type="xs:date" name="dataNascimento"/>
					  <xs:element type="xs:string" name="foto"/>
					</xs:sequence>
				  </xs:complexType>
				</xs:element>
				<xs:element name="morada">
				  <xs:complexType>
					<xs:sequence>
					  <xs:element type="xs:string" name="rua"/>
					  <xs:element type="xs:string" name="numero"/> 																
					  <xs:element name="codigoPostal">
					  <xs:simpleType>
					  <xs:restriction base="xs:string">
					  <xs:pattern value="[1-9][0-9]{3}-[1-9][0-9]{2}"/>
					  </xs:restriction>
					  </xs:simpleType>
					  </xs:element> 																	  
					  <xs:element type="xs:string" name="localidade"/>
					</xs:sequence>
				  </xs:complexType>
				</xs:element>
				<xs:element name="contactos">
				  <xs:complexType>
					<xs:sequence>																		
					<xs:element name="telefone">
					<xs:simpleType>
					<xs:restriction base="xs:int">
					<xs:pattern value="(2|3|9)[0-9]{8}"/>
					</xs:restriction>
					</xs:simpleType>
					</xs:element>						  
					<xs:element name="email">
					<xs:simpleType>
					<xs:restriction base="xs:string">
					<xs:whiteSpace value="collapse"/>
<xs:pattern value="[_a-zA-Z0-9\-\+]+(\.[_a-zA-Z0-9\-]+)*@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,})"/>
					</xs:restriction>
					</xs:simpleType>							  
					</xs:element> 																		
					</xs:sequence>
				  </xs:complexType>
				</xs:element>

				<xs:element type="xs:string" name="escalao"/> 		

					<!--  ------	  ID / IDREF  ------ 	-->
				<xs:element type="xs:string" name="Tclube"/> 														
				<xs:simpleType name="TclubeIDREF">
				<xs:restriction base="xs:IDREF">
				<xs:pattern value="C[1-9][0-9]*"/>
				</xs:restriction>
				</xs:simpleType> 											

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

	<xs:element name="Escaloes">
	  <xs:complexType>
		<xs:sequence>
		  <xs:element name="escalao" maxOccurs="unbounded" minOccurs="0">
			<xs:complexType>
			  <xs:sequence>
			   <xs:element name="id">
					<xs:simpleType>
					<xs:restriction base="xs:string"> 																  
					<xs:pattern value="E[1-9][0-9]*"/>   								  
					….. 														
				</xs:element>

   <xs:element name="Clubes">
	  <xs:complexType>
		<xs:sequence>
		  <xs:element name="Tclube" maxOccurs="unbounded" minOccurs="0">
			<xs:complexType>
			  <xs:sequence>  
		<!--  --------	ID / IDREF  -----   -->			  
		<xs:simpleType name="TclubeID">
					<xs:restriction base="xs:ID">
					<xs:pattern value="C[1-9][0-9]*"/>
					</xs:restriction>
		</xs:simpleType>

				<xs:element type="xs:string" name="nome"/>
				<xs:element name="morada">
				  <xs:complexType>
					<xs:sequence>
					  <xs:element type="xs:string" name="rua"/>
					  <xs:element type="xs:string" name="numero"/>						
					   <xs:element name="codigoPostal">
						<xs:simpleType>
						<xs:restriction base="xs:string">
						<xs:pattern value="[1-9][0-9]{3}-[1-9][0-9]{2}"/>
						</xs:restriction>
						</xs:simpleType>
						</xs:element> 																	
					  <xs:element type="xs:string" name="localidade"/>
					</xs:sequence>
				  </xs:complexType>
				</xs:element>
				<xs:element name="contactos">
				  <xs:complexType>
					<xs:sequence>						
					<xs:element name="telefone">
					<xs:simpleType>
					<xs:restriction base="xs:int">
					<xs:pattern value="(2|3|9)[0-9]{8}"/>		   																		
					……
					……						
				</xs:element>	

Obg.

Blackie.

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

Não tive tempo de ver isto mais cedo. Penso que te faltavam os xs:element que iriam conter o ID e o IDREF (declaravas os tipos e não os usavas).

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.