1 / 24

OCT

OCT. Xml Namespaces. Notes on XML Namespaces. Namespace notes taken and adapted from “XML in a Nutshell” By Harold and Means Java examples adapted from “XML and Java” – course text. Namespace specification is at: http://www.w3.org/TR/REC-xml-names/. Namespaces. Primary purpose:

torgny
Download Presentation

OCT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OCT Xml Namespaces Orgnizational and Distibuted Object Technologies

  2. Notes on XML Namespaces Namespace notes taken and adapted from “XML in a Nutshell” By Harold and Means Java examples adapted from “XML and Java” – course text Namespace specification is at: http://www.w3.org/TR/REC-xml-names/ Orgnizational and Distibuted Object Technologies

  3. Namespaces • Primary purpose: • To disambiguate element and attribute names. • Implementation: • Attach a prefix to an element or attribute name. • Map the prefix to a URI. This need not be a real place. • Default URI’s may also be provided for those • elements with no prefix. • The URI’s partition the elements and attributes into • disjoint sets. Orgnizational and Distibuted Object Technologies

  4. Namespaces • Each prefix is associated with one URI. • Names with prefixes associated with the same URI are • in the same namespace. • Elements and attributes in namespaces have names with • exactly one colon. • The text before the colon is called the prefix. • The text after the colon is called the local part. • The complete name, including the colon, is called the • qualified name. Orgnizational and Distibuted Object Technologies

  5. Namespaces • Prefixes are bound to namespace URI’s by attaching • an xmlns:prefix attribute to the the prefixed element • or one of its ancestors • For example: • <rdf:RDF xmlns:rdf=http://www.w3.org/TR/REC-rdf-syntax#> • associates the prefix rdf with the namespace URI shown. The • name RDF is therefore an element from this namespace. Orgnizational and Distibuted Object Technologies

  6. Namespaces • Bindings have scope within the element in which they’re • declared and its contents. • <rdf:RDF xmlns:rdf=http://www.w3.org/TR/REC-rdf-syntax#> • <!– within this element the prefix rdf is associated • with the RDF namespace  • </rdf:RDF> Orgnizational and Distibuted Object Technologies

  7. Namespaces • The default namespace • Is set using the xmlns attribute (with no prefix) • Applies only to elements not attributes • <SomeTag xmlns=“someURI”> • <insideTag> … </insideTag> • </SomeTag> • SomeTag and insideTag are both in the someURI namespace. Orgnizational and Distibuted Object Technologies

  8. Namespaces If there is no default namespace is declared then tags without Prefixes are in no namespace at all. Not even the default one. The only way an attribute belongs to a namespace is if it has a declared prefix. <rdf:RDF xmlns:rdf=“http://www.w3.org/TR/REC-rdf-syntax#> <rdf:Description about=“someValue”> : </rdf:Description> </rdf:RDF> The about attribute is in no namespace. Orgnizational and Distibuted Object Technologies

  9. Declaring Namespaces xmlns:pre=“someURN” is fine xmlns:pre=“” is illegal xmlns=“someURN” is fine xmlns=“” legal and same as no namespace Orgnizational and Distibuted Object Technologies

  10. Some Examples From The W3C Specification <x xmlns:edi='http://ecommerce.org/schema'>  <!-- the 'price' element's namespace is  http://ecommerce.org/schema -->  <edi:price units='Euro'>32.18</edi:price></x> Orgnizational and Distibuted Object Technologies

  11. <x xmlns:edi='http://ecommerce.org/schema'>  <!-- the 'taxClass' attribute's namespace is <x xmlns:edi='http://ecommerce.org/schema'>  <!-- the 'taxClass' attribute's namespace is  http://ecommerce.org/schema -->  <lineItem edi:taxClass="exempt">Baby food</lineItem></x> Orgnizational and Distibuted Object Technologies

  12. <?xml version="1.0"?><!-- all elements here are explicitly in the HTML namespace --><html:html xmlns:html='http://www.w3.org/TR/REC-html40'>  <html:head><html:title>Frobnostication</html:title><?xml version="1.0"?><!-- all elements here are explicitly in the HTML namespace --><html:html xmlns:html='http://www.w3.org/TR/REC-html40'>  <html:head><html:title>Frobnostication</html:title> </html:head>  <html:body><html:p>Moved to     <html:a href='http://frob.com'>here.</html:a></html:p> </html:body></html:html> Orgnizational and Distibuted Object Technologies

  13. <?xml version="1.0"?><!-- both namespace prefixes are available throughout --><bk:book xmlns:bk='urn:loc.gov:books'          xmlns:isbn='urn:ISBN:0-395-36341-6'>    <bk:title>Cheaper by the Dozen</bk:title>    <isbn:number>1568491379</isbn:number></bk:book> Orgnizational and Distibuted Object Technologies

  14. <?xml version="1.0"?><!-- elements are in the HTML namespace, in this case <?xml version="1.0"?><!-- elements are in the HTML namespace, in this case  by default --><html xmlns='http://www.w3.org/TR/REC-html40'>  <head><title>Frobnostication</title></head>  <body><p>Moved to     <a href='http://frob.com'>here</a>.</p></body></html> Orgnizational and Distibuted Object Technologies

  15. <?xml version="1.0"?><!-- unprefixed element types are from "books" --><book xmlns='urn:loc.gov:books'      xmlns:isbn='urn:ISBN:0-395-36341-6'>    <title>Cheaper by the Dozen</title>    <isbn:number>1568491379</isbn:number></book><?xml version="1.0"?><!-- unprefixed element types are from "books" --><book xmlns='urn:loc.gov:books'      xmlns:isbn='urn:ISBN:0-395-36341-6'>    <title>Cheaper by the Dozen</title>    <isbn:number>1568491379</isbn:number></book> Orgnizational and Distibuted Object Technologies

  16. <?xml version="1.0"?><!-- initially, the default namespace is "books" --><book xmlns='urn:loc.gov:books'      xmlns:isbn='urn:ISBN:0-395-36341-6'>    <title>Cheaper by the Dozen</title>    <isbn:number>1568491379</isbn:number>    <notes>      <!-- make HTML the default namespace for <?xml version="1.0"?><!-- initially, the default namespace is "books" --><book xmlns='urn:loc.gov:books'      xmlns:isbn='urn:ISBN:0-395-36341-6'>    <title>Cheaper by the Dozen</title>    <isbn:number>1568491379</isbn:number>    <notes>      <!-- make HTML the default namespace for  some commentary -->      <p xmlns='urn:w3-org-ns:HTML'>          This is a <i>funny</i> book!      </p>    </notes></book> Orgnizational and Distibuted Object Technologies

  17. <?xml version='1.0'?><Beers>  <!-- the default namespace is now that of HTML -->  <table xmlns='http://www.w3.org/TR/REC-html40'>   <th><td>Name</td><td>Origin</td><td>Description</td></th>   <tr>      <!-- no default namespace inside table cells -->     <td><brandName xmlns="">Huntsman</brandName></td>     <td><origin xmlns="">Bath, UK</origin></td>     <td>       <details xmlns=""><class>Bitter</class><hop>Fuggles</hop>         <pro>Wonderful hop, light alcohol, good summer beer</pro>         <con>Fragile; excessive variance pub to pub</con>         </details>        </td>      </tr>    </table>  </Beers><?xml version='1.0'?><Beers>  <!-- the default namespace is now that of HTML -->  <table xmlns='http://www.w3.org/TR/REC-html40'>   <th><td>Name</td><td>Origin</td><td>Description</td></th>   <tr>      <!-- no default namespace inside table cells -->     <td><brandName xmlns="">Huntsman</brandName></td>     <td><origin xmlns="">Bath, UK</origin></td>     <td>       <details xmlns=""><class>Bitter</class><hop>Fuggles</hop>         <pro>Wonderful hop, light alcohol, good summer beer</pro>         <con>Fragile; excessive variance pub to pub</con>         </details>        </td>      </tr>    </table>  </Beers> The default namespace can be set to the empty string. This has the same effect, within the scope of the declaration, of there being no default namespace. Orgnizational and Distibuted Object Technologies

  18. <!-- http://www.w3.org is bound to n1 and n2 --><x xmlns:n1="http://www.w3.org"     xmlns:n2="http://www.w3.org" >  <bad a="1"     a="2" />  <bad n1:a="1"  n2:a="2" /></x> Orgnizational and Distibuted Object Technologies

  19. <!-- http://www.w3.org is bound to n1 and is the default --><x xmlns:n1="http://www.w3.org"     xmlns="http://www.w3.org" >   <good a="1"     b="2" />   <good a="1"     n1:a="2" /></x> Orgnizational and Distibuted Object Technologies

  20. Namespaces and Java // Exploring the NamespaceCorrector class in Chapter 4 of // XML and Java // Example 1 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.XMLSerializer; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; Orgnizational and Distibuted Object Technologies

  21. public class NamespaceExplore { static final String NS = "http://www.andrew.cmu.edu/~mm6"; // the assigned namespace to the xml:lang attribute static final String XML_NS = "http://www.w3.org/XML/1998/namespace"; // the assigned namespace of the xmlns attribute static final String XMLNS_NS = "http://www.w3.org/2000/xmlns/"; Orgnizational and Distibuted Object Technologies

  22. public static void main(String[] argv) throws Exception { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); dbfactory.setNamespaceAware(true); DocumentBuilder builder = dbfactory.newDocumentBuilder(); Document factory = builder.newDocument(); OutputFormat format = new OutputFormat("xml", "UTF-8", true); XMLSerializer serializer = new XMLSerializer(System.out, format); // build a top element within a namespace Element top = factory.createElementNS(NS, "mm6:GradeBook"); Orgnizational and Distibuted Object Technologies

  23. // define an xmlns attribute within this top element top.setAttributeNS(XMLNS_NS, "xmlns:mm6", NS); // define an xml:lang attribute within this top element top.setAttributeNS(XML_NS, "xml:lang", "en"); Element student = factory.createElementNS(NS,"mm6:Student"); top.appendChild(student); Text t = factory.createTextNode("87.5"); student.appendChild(t); serializer.serialize(top); System.out.println(""); } } Orgnizational and Distibuted Object Technologies

  24. Output D:\McCarthy\www\95-733\examples\chap04>java NamespaceExplore <?xml version="1.0" encoding="UTF-8"?> <mm6:GradeBook xml:lang="en" xmlns:mm6= "http://www.andrew.cmu.edu/~mm6"> <mm6:Student>87.5</mm6:Student> </mm6:GradeBook> Orgnizational and Distibuted Object Technologies

More Related