From: J Kimball <nntp@kmbll.com>
Subject: XML/Ada schema validation and XML namespaces
Date: Mon, 08 Apr 2013 14:58:55 -0500
Date: 2013-04-08T14:58:55-05:00 [thread overview]
Message-ID: <kjv7i1$flb$1@hugin.sparre-andersen.dk> (raw)
Hello
I'm having the derndest time figuring out how to validate XML using
namespaces against a schema with XML/Ada. I seem to recall that doing
away with namespaces makes it work. After all the debug junk I don't
care about scrolls past, I see:
Validation_Error: Attribute "xmlns:agent" invalid for type
{http://singo1.com/schemas/agent}agent-message
Exception name: SCHEMA.VALIDATORS.XML_VALIDATION_ERROR
it seems like an issue with XML/Ada. Can you tell me if I'm missing a
feature to enable, something about XML that I'm missing or just wrong
code or an example that is using namespaces that works?
Some XML (agent.xml):
<?xml version="1.0"?>
<agent:response xmlns:agent="http://example.com/schemas/agent">
<agent:message>Zerg</agent:message>
</agent:response>
A schema (agent.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://singo1.com/schemas/agent"
xmlns:agent="http://example.com/schemas/agent">
<xs:element name="response" type="agent:agent-message"/>
<xs:complexType name="agent-message">
<xs:sequence>
<xs:element ref="agent:message"/>
</xs:sequence>
</xs:complexType>
<xs:element name="message" type="xs:string"/>
</xs:schema>
For those who are so inclined, I generated the XML schema from a RelaxNG
schema (agent.rng) with trang:
<?xml version="1.0"?>
<rng:grammar
xmlns:rng="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/annotation/1.0"
xmlns:agent="http://example.com/schemas/agent"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<rng:start>
<rng:ref name="agent-response" />
</rng:start>
<rng:define name="agent-response">
<a:documentation>A response from a client.</a:documentation>
<rng:element name="agent:response">
<rng:ref name="agent-message" />
</rng:element>
</rng:define>
<rng:define name="agent-message">
<a:documentation>A simple message.</a:documentation>
<rng:element name="agent:message"><rng:data type="string"
/></rng:element>
</rng:define>
</rng:grammar>
% trang agent.rng agent.xsd
agent.xml validates successfully against both schemas using jing and
xmllint:
% jing agent.rng agent.xml
% xmllint --relaxng agent.rng agent.xml
% xmllint --schema agent.xsd agent.xml
next reply other threads:[~2013-04-08 19:58 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-08 19:58 J Kimball [this message]
2013-04-08 20:00 ` XML/Ada schema validation and XML namespaces J Kimball
2013-04-09 11:45 ` Simon Wright
2013-04-10 17:42 ` J Kimball
2013-04-10 19:56 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox