Re: Parsing a MODS-document with validation fails

Rolf <[email protected]>
Newsgroups gmane.comp.java.jdom.general
Message-ID <[email protected]>
I'm busy hunting through the specs to find a sensible answer to this 
quandry too...

My take is that it may be an issue with the parser, in the sense that, 
by the spec, when you import an XSD in to another, there needs to be a 
prefix declared for that namespace/import...
http://www.w3.org/TR/xmlschema-0/#import <-- see the last paragraph of 5.4:

Quoting:
When schema components are imported from multiple namespaces, each 
namespace must be identified with a separate |import 
<http://www.w3.org/TR/xmlschema-0/#element-import>| element. The |import 
<http://www.w3.org/TR/xmlschema-0/#element-import>| elements themselves 
must appear as the first children of the |schema 
<http://www.w3.org/TR/xmlschema-0/#element-schema>| element. 
Furthermore, each namespace must be associated with a prefix, using a 
standard namespace declaration, and that prefix is used to qualify 
references to any schema components belonging to that namespace. 
Finally, |import <http://www.w3.org/TR/xmlschema-0/#element-import>| 
elements optionally contain a |schemaLocation 
<http://www.w3.org/TR/xmlschema-0/#attribute-schemaLocation>| attribute 
to help locate resources associated with the namespaces. We discuss the 
|schemaLocation 
<http://www.w3.org/TR/xmlschema-0/#attribute-schemaLocation>| attribute 
in more detail in a later section.


In theory, by spec, at least, there should be a way to positively 
associate the namespace URI http://www.w3.org/1999/xlink with the prefix 
'xlink'. Both by the declaration on the main document, and the duplicate 
declaration on the XSD as part of the import requirements.

The way I see it is that the parser should be providing the correct 
prefix 'xlink' with the attribute, and it is a parser bug.

What is confusing me is the duplicate declaration of the xlink 
namespace, once on the main document, and the second time in it's XSD... 
I wonder if that is where the confusion lies...

Anyway, based on my initial inspection, it should be possible to 
*always* scan up the JDOM tree to find a namespace matching the 
attribute's URI, and then reuse that prefix.

This is a test/process that could be used for any attribute, not just 
those cases where you have a duplicate declaration for a local name.

Unfortunately, it's 23:53 for me, and my head is a little twisted up by 
this issue right now... so I need a fresh look at it too.... I can't 
even seem to be able to put together a 'simple' test case with all the 
confusing extraneous stuff removed.

But, as for the ns0 'default' name, I think that is a poor solution, and 
that it should be possible to scan up the tree to find a real prefix for 
that namespace... If the parser is not going to provide it, I think the 
JDOM SAX Handler can fall back on a work-around solution that does not 
'lose' the attribute - a solution that is a combination of Thomas's fix, 
and a smarter prefix determination routine.

Rolf

On 07/08/2011 11:34 PM, Jason Hunter wrote:
> I tested the same thing with DOMBuilder.  It shows two attributes with the same name on the same element.
>
> name: type
> value: simple
>
> name: type
> value: personal
>
> My guess is in Thomas' sample code it's the transform action that did the ns0 addition.
>
> JDOM doesn't error out when it sees this, the code just lets setAttribute() overwrite any previous assignments.
>
> It seems like the input is technically malformed.  Has there been official advice given on what an object model should do in this case?
>
> -jh-
>
> On Aug 7, 2011, at 12:42 PM, Bradley S. Huffman wrote:
>
>> I did a simple test and printed out what was being given to SAXHandler
>> by the parser.  Sure enough, on this document when validation is turn
>> on, the SAX parser is reporting two attributes with the same qname
>> (which happens to be the local name since they are both unprefix), but
>> in different namespaces.
>>
>> JDOM should take the events as presented and build a object tree to
>> represent it.  It shouldn't "generate" anything.  However, in this
>> case I don't know who to point the finger at, but it's not JDOM.
>>
>> Elliotte, are you still lurking around?
>>
>> ********************************************
>> namespaceURI = http://www.loc.gov/mods/v3
>> localName = name
>> qName = name
>> attribute local name = type
>> attribute qname = type
>> attribute uri =
>> attribute type = CDATA
>> attribute value = personal
>> attribute local name = type
>> attribute qname = type
>> attribute uri = http://www.w3.org/1999/xlink
>> attribute type = CDATA
>> attribute value = simple
>> ********************************************
>> namespaceURI = http://www.loc.gov/mods/v3
>> localName = namePart
>> qName = namePart
>> attribute local name = type
>> attribute qname = type
>> attribute uri =
>> attribute type = CDATA
>> attribute value = family
>> _______________________________________________
>> To control your jdom-interest membership:
>> http://www.jdom.org/mailman/options/jdom-interest/[email protected]
>
> _______________________________________________
> To control your jdom-interest membership:
> http://www.jdom.org/mailman/options/jdom-interest/[email protected]
>

_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.