OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

relax-ng message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: [relax-ng] Compact syntax issue: namespace declarations


At the moment, the compact syntax allows only file-level namespace
declarations.  This creates a problem in translating from the XML syntax to
the non-XML syntax.  If a schema in the XML syntax uses prefixes
inconsistently (which is not disallowed either by XML or RELAX NG), then it
becomes difficult/impossible to translate it automatically to the non-XML
syntax.  The translator cannot simply rename the prefixes, because the
in-scope namespaces might be significant for an annotation or for a <value>.
For example,

<group>
  <element name="foo" p:assert="count(.//x:foo) = 17"
    xmlns:x="http://www.example.com/1";>
    <ref name="foo"/>
  </element>
  <element name="bar" p:assert="count(.//x:foo) = 17"
    xmlns:x="http://www.example.com/2";>
    <ref name="bar"/>
  </element>
</group>

There are two basic solutions:

1. Live with it.  Schemas in the XML syntax that use prefixes inconsistently
may not be translatable into the non-XML syntax.

2. Solve it by providing a syntax for local namespace declarations, e.g.

local {
  namespace x = "http://www.example.com/1";
  [ p:assert="count(.//x:foo) = 17" ]
  element foo { foo }
},
local {
  namespace x = "http://www.example.com/2";
  [ p:assert="count(.//x:foo) = 17" ]
  element bar { bar }
}

James









[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC