[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Costello, Roger L." <costello@m...>
  • To: "xml-dev@l..." <xml-dev@l...>
  • Date: Wed, 22 Sep 2010 10:21:13 -0400

David Carlisle suggested validating an XML document against a DTD as a mechanism for detecting unused namespaces. I tried it. It works well.

I created this DTD:

<!ELEMENT Root (child)>
<!ATTLIST Root
          xmlns CDATA #FIXED 'http://www.used.org'>

<!ELEMENT child (#PCDATA)>
<!ATTLIST child
          xmlns CDATA #FIXED 'http://www.used.org'>


This XML document contains no unused namespaces:

-----------------------------------
<Root xmlns="http://www.used.org">

        <child>true</child>

</Root>
-----------------------------------

It validates fine.


Then I added an unused namespace:

-----------------------------------
<Root xmlns="http://www.used.org"
      xmlns:foo="blah">

        <child>true</child>

</Root>
-----------------------------------

Validation fails. Good! Validation detected the unused namespace.


Conversely, this XML Schema does not detect the unused namespace:

<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.used.org"
        elementFormDefault="qualified">
    
    <element name="Root">
        <complexType>
            <sequence>
                <element name="child" type="boolean" />
            </sequence>
        </complexType>
    </element>

</schema>

Validation succeeds with or without the unused namespace.


Conclusion: it appears that one mechanism for detecting unused namespaces in an XML document is to validate it against a DTD. Can anyone think of a case where a DTD would not detect an unused namespace?

/Roger



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


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member