diff options
Diffstat (limited to 'xml.html.markdown')
| -rw-r--r-- | xml.html.markdown | 127 | 
1 files changed, 127 insertions, 0 deletions
| diff --git a/xml.html.markdown b/xml.html.markdown new file mode 100644 index 00000000..d407512d --- /dev/null +++ b/xml.html.markdown @@ -0,0 +1,127 @@ +--- +language: xml +filename: learnxml.xml +contributors: +  - ["João Farias", "https://github.com/JoaoGFarias"] +--- + +XML is a markup language designed to store and transport data. + +Unlike HTML, XML does not specify how to display or to format data, just carry it. + +* XML Syntax + +```xml +<!-- Comments in XML are like this --> + +<?xml version="1.0" encoding="UTF-8"?> +<bookstore> +  <book category="COOKING"> +    <title lang="en">Everyday Italian</title> +    <author>Giada De Laurentiis</author> +    <year>2005</year> +    <price>30.00</price> +  </book> +  <book category="CHILDREN"> +    <title lang="en">Harry Potter</title> +    <author>J K. Rowling</author> +    <year>2005</year> +    <price>29.99</price> +  </book> +  <book category="WEB"> +    <title lang="en">Learning XML</title> +    <author>Erik T. Ray</author> +    <year>2003</year> +    <price>39.95</price> +  </book> +</bookstore> + +<!-- Above is a typical XML file. +  It starts with a declaration, informing some metadata (optional). + +  XML uses a tree structure. Above, the root node is 'bookstore', which has +  three child nodes, all 'books'. Those nodes has more child nodes, and so on... + +  Nodes are created using open/close tags, and childs are just nodes between +  the open and close tags.--> + + +<!-- XML carries two kind of data: +  1 - Attributes -> That's metadata about a node. +      Usually, the XML parser uses this information to store the data properly. +      It is characterized by appearing with the format name="value" within the opening +      tag. +  2 - Elements -> That's pure data. +      That's what the parser will retrieve from the XML file. +      Elements appear between the open and close tags. --> + + +<!-- Below, an element with two attributes --> +<file type="gif" id="4293">computer.gif</file> + + +``` + +* Well-Formated Document x Validation + +A XML document is well-formated if it is syntactically correct. +However, it is possible to inject more constraints in the document, +using document definitions, such as DTD and  XML Schema. + +A XML document which follows a document definition is called valid, +regarding that document. + +With this tool, you can check the XML data outside the application logic. + +```xml + +<!-- Below, you can see an simplified version of bookstore document, +  with the addition of DTD definition.--> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE note SYSTEM "Bookstore.dtd"> +<bookstore> +  <book category="COOKING"> +    <title >Everyday Italian</title> +    <price>30.00</price> +  </book> +</bookstore> + +<!-- This DTD could be something like:--> + +<!DOCTYPE note +[ +<!ELEMENT bookstore (book+)> +<!ELEMENT book (title,price)> +<!ATTLIST book category CDATA "Literature"> +<!ELEMENT title (#PCDATA)> +<!ELEMENT price (#PCDATA)> +]> + + +<!-- The DTD starts with a declaration. +  Following, the root node is declared, requiring 1 or more child nodes 'book'. +  Each 'book' should contain exactly one 'title' and 'price' and an attribute +  called 'category', with "Literature" as its default value. +  The 'title' and 'price' nodes contain a parsed character data.--> + +<!-- The DTD could be declared inside the XML file itself.--> + +<?xml version="1.0" encoding="UTF-8"?> + +<!DOCTYPE note +[ +<!ELEMENT bookstore (book+)> +<!ELEMENT book (title,price)> +<!ATTLIST book category CDATA "Literature"> +<!ELEMENT title (#PCDATA)> +<!ELEMENT price (#PCDATA)> +]> + +<bookstore> +  <book category="COOKING"> +    <title >Everyday Italian</title> +    <price>30.00</price> +  </book> +</bookstore> +``` | 
