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> +``` |