Jump to content
amvm

xml unable to parse schema file

Recommended Posts

amvm

Boas.... esta-me dando o erro "unable to parse schema file" quando tento validar validar um ficheiro xml pelo ficheiro xsd construido.

Os cabeçalhos dos ficheiros xml e xsd sao, respectivamente:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="xsdTrabalho.xslt"?>
<Hospitais xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsdTrabalho.xsd" id="1" >	


<?xml version="1.0" encoding="ISO-8859-1"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"  elementFormDefault="qualified"  attributeFormDefault="unqualified">

se alguem puder ajudar agradecia :/

cumps

Share this post


Link to post
Share on other sites
Rui Carlos

Com a informação que dás é difícil saber qual é o problema. Podes colocar aqui os ficheiros completos? Qual é o software que estás a usar?

Share this post


Link to post
Share on other sites
amvm

então como meto de modo a poder repetir várias vezes?

<xs:simpleType name= "TGrauParentesco" >

<xs:element name="nomeFamiliar" type="xs:string" maxOccurs="unbounded" />

<xs:element name="nomeDoenca" type="xs:string" maxOccurs="unbounded"/>

</xs:simpleType>

assim?

Share this post


Link to post
Share on other sites
amvm

o objectivo é fazer uma ficha hospitalar de pacientes que contenha esse tipo de informação. O problema persiste. Quando vou a validar o ficheiro xml diz "unable to parse schema file"

Share this post


Link to post
Share on other sites
Rui Carlos

Com os seguintes conteúdos não obtive nenhum erro:

EDIT: a pedido do autor do tópico, foi removido o código (excepto a parte que foi corrigida).

<xs:complexType name= "TGrauParentesco" >
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="nomeFamiliar" type="xs:string" />     
            <xs:element name="nomeDoenca" type="xs:string" />       
        </xs:sequence>
    </xs:complexType>

Share this post


Link to post
Share on other sites
amvm

obrigada :D funcionou!!

Olha será muito pedir que apagues o codigo? é um trabalho de escola e nao desejava nada que alguém me copiasse :S

agradecia a atenção se possivel.

cumps

Share this post


Link to post
Share on other sites
Rui Carlos

Algumas notas:

- Apaguei a maioria do código, mas se alguém copiasse, o fórum permitia-te mostrar facilmente que tu eras o autor original (de referir que quem usar um leitor de feeds para seguir o fórum pode ter acesso ao código apagado);

- Não sei que software estás a usar, mas há editores que te permitem detectar facilmente os erros (em vez de dizerem simplesmente "xml unable to parse schema file"), como o Oxygen ou o XMLSpy (pagos, mas com trial);

- O formato do XML não me parece grande coisa... Os "sim"/"não" não fazem muito sentido. Podias removê-los, e ficaria a tag anterior vazia em vez de ter "não", ou uma lista de items em vez de "sim"+lista de items. O grau de parentesco também não me parece estar muito bem... Devias ter um "item" (ou parecido) à volta de cada par nomeFamiliar/nomeDoenca.

Share this post


Link to post
Share on other sites
amvm

Boas... obrigada pelos conselhos. Mas olha em relação aos sim/não como é que depois identifico o facto de esse paciente ter ou nao uma dada doença? o mesmo acontece com o gau de parenteco... Neste caso o grau de parentesco até poderia ser colocado como atributo não? Em relação aos sim/não nao tenho ideia como resolver.

ps: agredeço o facto de ter apagado o código ;)

cumps

Share this post


Link to post
Share on other sites
Rui Carlos

Relativamente ao sim/não saberias que era não se não houvesse conteúdo.

A ideia era em vez de

<list><nao></nao></list>

ter

<list/>

E em vez de

<list><sim><item>...</item><item>...</item></sim></list>

ter

<list><item>...</item><item>...</item></list>

Fazer do grau de parentesco um atributo parece-me uma boa ideia.

Share this post


Link to post
Share on other sites
amvm

Mas assim resolvo o problema de saber se vou ter ou não doenças (por doenças)? O item significa que por exemplo: tem alguma doença? se sim então mete lá :

<item>asma</item>

se não tiver nada meto... o item terá de ser neste caso "nao obrigatorio" e pode-se repetir varias vezes certo?

ou então o item conter a palavra não:

<item>não</item>

cumps

Share this post


Link to post
Share on other sites
Rui Carlos

Sim, o item poderia aparece 0 ou mais vezes. Se não aparecesse, é porque não havia doenças.

O item conter a palavra "não" é o tipo de solução que nunca deves usar em XML. Esse tipo de informação seria no máximo uma tag (como tu tinhas). O meu ponto é que neste caso nem das tags sim/não precisas.

Não sei como é que vais usar o XML, mas em XSLT poderias verificar se a resposta é não através do teste not(historialClinicoPaciente/doencas/item).

Share this post


Link to post
Share on other sites
amvm

Bem eu ainda nao dei xslt mas a partir daí tbm vejo a melhor solução ;) muito obrigado pela ajuda!

cumprimentos

Share this post


Link to post
Share on other sites
amvm

Funcionou... Tenho de meter obrigatoriamente atributos fixos e opcionais. Até que ponto os que conseguirei implementar nesta "aplicação"?. Não tenho uma noção muito nitida de atributo fixo e os exemplos qque encontrei na net também não me ajudara muito :/

Share this post


Link to post
Share on other sites
Rui Carlos

É difícil de avaliar isso sem ter uma perspectiva global sobre o ficheiro. Mas não acho muita piada a tags com atributos com o mesmo nome (data). Também não sei até que ponto fará sentido ter consultasExternas como tag, e oftalmologia como texto (mas isto é difícil de avaliar sem ter uma visão global do problema).

Share this post


Link to post
Share on other sites
amvm

Tipo eu pensei em dividir a tag consultas em consulta externa e consulta de serviços de urgencia, visto que fui ao portal de saude e tinha isso, e cada uma delas tinha um preço pré-definido (daí meter como atributo fixo)... Em relação á data foi mais uma maneira que arranjei de meter outro atributo, mas sempre posso meter como elemento, como te digo, não sei.

<xs:complexType name="TConsultas">
        <xs:sequence>
            <xs:element name="consultaExterna" type="TListagemConsultasExternas" minOccurs="0" maxOccurs="1" />
		<xs:element name="consultaServicosUrgencia" type="TListagemConsultasUrgencia" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
    
 <xs:complexType name="TListagemConsultasUrgencia">
        <xs:sequence>
            <xs:element name="Data" type="TItemConsultas" maxOccurs="unbounded"/>
        </xs:sequence>
	  <xs:attribute name="preco" type="xs:decimal" fixed="9.40"/>
    </xs:complexType>

    <xs:complexType name="TListagemConsultasExternas">
        <xs:sequence>
            <xs:element name="Data" type="TItemConsultas" maxOccurs="unbounded"/>
        </xs:sequence>
	  <xs:attribute name="preco" type="xs:decimal" fixed="4.50"/>
    </xs:complexType>

 <xs:complexType name="TItemConsultas">
        <xs:sequence>
            <xs:element name="item" type="xs:string"  maxOccurs="unbounded"/>
        </xs:sequence>
	  <xs:attribute name="data" type="xs:date" use="required"/>
    </xs:complexType>



O meu objectivo era

<consultas>
						<consultaExterna preco="4.50">

							<item data= "2010-02-04">
							    Oftalmologia
							</item data= "2011-02-06">
							    Alergologista
							</item>

						</consultaExterna>

						<consultaServicosUrgencia preco="9.40">


						</consultaServicosUrgencia>
					</consultas>
                        <cirugias>

... Ter vários items e cada um tinha  a Data, ou então o caso de o paciente nunca ter ido a uma consulta Externa ou a uma consulta de servicos de urgencia. Mas bem, nao tou a conseguir fazer isso! -.-

cumps

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.