[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