[
Lists Home |
Date Index |
Thread Index
]
> Hello,
> I am trying to use xml:base and relative URLs with
> SAX/Java parsing, but am sure that I have not done it
> correctly (validation has errors).
>
> In the xml schema, I have defined:
> <xs:element name="audioClip" type="xs:anyURI"/>
>
> for example,
> <audioClip>C:\Documents and Settings\All
> Users\Documents\My Music\Sample Music\Highway
> Blues.wma</audioClip>
The value of this element is a Windows filename, not a URI. It's not
invalid, because the schema spec is pretty liberal about what it allows in
an xs:anyURI field. But the "\" is not recognized as a separator in the
path, so you won't have any luck using xml:base to make the reference
relative. You need to start by writing it as
file:///C:/Documents%20and%20Settings/All%20Users/Documents... etc
>
> However, I realized that this makes my xml file
> non-relocatable. So I thought of using xml:base and
> relative URLs so that if the xml file is at
> C:\Documents and Settings\All Users\Documents\ then
> the xml becomes:
> <audioClip xml:base = "My Music\Sample Music\"
> xlink:href = "Highway Blues.wma" xlink:type = "simple"
> xmlns:xlink="http://www.w3.org/1999/xlink" />
>
> 1. However, I get validation error: "Element audioClip
> is based on a simple type. Attribute 'xml:base' is not
> defined in the schema instance namespace (xsi)."
Correct: if the schema doesn't allow xml:base, then you can't use it. The
only privileged attributes that you can use without declaring them are the
xsi: attributes defined in the XML schema spec itself, such as xsi:type.
>
> 2. Also how would I access the URL from my code during
> SAX parsing? as an attribute of the
> audioClip? atts.getValue("", "base");
>
atts.getValue("http://www.w3.org/XML/1998/namespace", "base")
Michael Kay
http://www.saxonica.com/
|