Jump to content
zecapistolas

Dúvida XML-Schema e XML com Namespaces

Recommended Posts

zecapistolas

Viva,

Tenho o seguinte exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<empresa>
<sector_informatico>
	<funcionario nome="Luis" />
	<funcionario nome="Ze" />
</sector_informatico>
<sector_marketing>
	<funcionario nome="Joao" morada="Porto" idade="24" />
	<funcionario nome="Manuel" morada="Lisboa" idade="22" />
</sector_marketing>
</empresa>

XML Schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="empresa" type="empresa_type" />

<xs:complexType name="empresa_type">
	<xs:sequence>
		<xs:element name="sector_informatico" type="sI_type"/>
		<xs:element name="sector_marketing" type="sM_type"/>
	</xs:sequence>
</xs:complexType>

<xs:complexType name="sI_type">
	<xs:sequence>
		<xs:element name="funcionario" type="funcionario_type"/>
	</xs:sequence>
</xs:complexType>

<xs:complexType name="sM_type">
	<xs:sequence>
		<xs:element name="funcionario" type="funcionario_type"/>
	</xs:sequence>
</xs:complexType>

<xs:complexType name="funcionario_type">
	 <xs:attribute name="nome" type="xs:string"/> ou será que deverá ter 3 atributos
</xs:complexType>
</xs:schema>

Se repararem no sector_informatico tenho definido funcionario, mas no sector_marketing também tenho funcionario definido de maneira diferente! Eu quero que o nome do elemento seja o mesmo ( funcionario ), mas queria definir um namespace para o funcionario do sector_informatico e outro para o funcionario do sector_marketing, para depois no XML-Schema poder diferenciar os dois, como faço isso?

cumps  ;)

Share this post


Link to post
Share on other sites
Rui Carlos

Acho que precisas de separar o XML schema em vários ficheiros, e depois usar o <xsd:import />.

Mas tens algum motivo em particular para fazer isso? Assim à primeira vista não há necessidade de fazer isso, basta colocares atributos como opcionais (a menos que queiras que num caso os atributos seja todos obrigatórios e no outro opcionais).

Share this post


Link to post
Share on other sites
zecapistolas

Acho que precisas de separar o XML schema em vários ficheiros, e depois usar o <xsd:import />.

Vou averiguar isso, mas não existirá outra forma?

Mas tens algum motivo em particular para fazer isso? Assim à primeira vista não há necessidade de fazer isso, basta colocares atributos como opcionais (a menos que queiras que num caso os atributos seja todos obrigatórios e no outro opcionais).

Exacto, quero que num sector_informatico seja apenas obrigatório o nome, mas no sector_marketing já quero que os campos nome, morada e idade sejam obrigatórios.

cumps  ;)

Share this post


Link to post
Share on other sites
Rui Carlos

Vou averiguar isso, mas não existirá outra forma?

Penso que só podes ter um (target)namespace por ficheiro, por isso precisarás de um schema por (target)namespace. Só não estou certo se precises do import. Mas já há uns anos que não trabalho regularmente com XML, por isso, não te consigo ajudar muito mais.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.