Uploaded image for project: 'Daffodil'
  1. Daffodil
  2. DFDL-82

Change all internal use URIs so they are not Internet URLs

XMLWordPrintableJSON

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: Minor Minor
    • s7
    • None
    • None
    • None

      Turns out it is a very bad idea for XML namespaces to be identified by URLs.

      All those xmlns:xsd="http://...." style things cause many applications to fail if the computers they are running on get disconnected from the internet, or if the w3c servers go down. There is also a huge speed penalty for this since XML namespaces are used a lot, and round-trips across the Internet to retrieve schemas are really inadvisable. Schemas change slowly if at all. Retrieving them on demand is silly.

      The schemaLocation features in XSD have never worked. The standard for what they mean is insufficiently clear and appears to have been left that way intentionally.

      Those xmlns identifiers are intended to be exactly and only that, identifiers that are unique because they use a domain name to avoid clashes. They are not supposed to be the location of anything.

      More recent practice is things like this: xmlns:xcat="id::www.ogf.org::DFDL::x::y::z::2012-03-29" That is, it's any unique string, sufficiently unlikely to be used by anyone else. Those standards that do use URLs as these identifiers are not putting an XML schema at the location specified by the URL, but some error message page, or alternatively just making sure anyone using that URL gets a page-not-found error.

      This task: change all our URIs to use the new style, so all our namespaces have non-URL identifiers, so that things will fail if it reaches out to the internet for anything.

      This includes changing our front-end validator, which already does text substitutions on URIs, to swap out all the industry standard URIs like for say, W3C XML Schema, with unique IDs of our choosing so that our DFDL processor will only look to its own internal copies of those schemas, and will never go after the internet version.

      Daffodil should require people to load up some local directory (or tree thererof) of local copies of DFDL and or XML Schemas that are to be used. It should not reach across the internet to retrieve schemas, but should error out saying "schema not loaded" or some such error, with suggestions of how to use some feature to make the schema available to the Daffodil processor.

      This is a small subset of implementing an XML Catalog. (Note that I tried just using the XML Catalog libraries, and found the code not useful. I think this job is too small to bother with worrying about reusuing that 3rd party library. But we might want to add options to Daffodil to specify an XML Catalog location, and implement a tiny subset of the XML Catalog document syntax as a way of specifying these schema locations.

              aseyler Andrew Seyler
              mbeckerle.dfdl Mike Beckerle
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: