84
Markup Languages und Anwendungen Marc Seeger (20488) [email protected] Computer Science and Media, HdM Stuttgart, WS 08/09

Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) [email protected]

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Markup Languages und Anwendungen

Marc Seeger (20488)[email protected] Science and Media,HdM Stuttgart, WS 08/09

Page 2: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Ruby XML Mapping Libraries YAML

Page 3: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

A language that doesn't affect the way you think about programming, is not worth knowing

Alan Perlis

Page 4: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Origin:

Yukihiro "Matz" Matsumoto

Japan 1993

1st english book: 2000 Ruby on Rails: 2004

Page 5: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Variable Declaration:

Function Declaration:do_something("Marc", 4)

MarcMarcMarc12

Page 6: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

ClassNames method_names and variable_names methods_asking_a_question? slightly_dangerous_methods! @instance_variables $global_variables SOME_CONSTANTS or OtherConstants

Page 7: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 8: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Principle of Least Surprise

Page 9: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 10: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 11: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 12: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 13: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

?

Page 14: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

No Primitives, Integers and floats are objects!

-1.abs => 1

Page 15: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

;No Semi-colons

Page 16: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

nil, not null nil is an object!

nil.nil? => true

nil.class => NilClass

nil and false are false

everything else, including 0, is true

Page 17: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Expression oriented syntax.

Almost everything returns a value

Methods automatically return their last expression.

Page 18: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Single Inheritance

But mixins are available (= Interface with implemented methods)

Page 19: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

This module implements the mixin

A class that doesn‘t do that much

inheritingand mixing!

And mixed in that one

We inherited that one

Page 20: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Classes are always open (even built in classes)

Another Example from Rails:1.hour.from_now

Page 21: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 22: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Procedural Object Oriented Functional

Page 23: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 24: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

irb(main):001:0> 42.methods=> ["%", "odd?", "inspect", "prec_i", "<<", "tap", "div", "&", "clone", ">>", "public_methods", "__send__", "instance_variable_defined?", "equal?", "freeze", „to_sym", "*", "ord", "+", "extend", "next", "send", "round", "methods", "prec_f„, "-", "even?", "singleton_method_added", "divmod", "hash", "/", "integer?", "downto", "dup", "instance_variables", "|", "eql?", "size", "object_id", "instance_eval", "truncate", "~", "id", "to_i", "singleton_methods", […]

irb(main):005:0> nil.class=> NilClass

irb(main):002:0> nil.hallo_hdmNoMethodError: undefined method `hallo_hdm' for nil:NilClass

from (irb):2

Page 25: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Strong typing▪ " 5 " / 2 „NoMethodError“

Weak typing▪ " 16 " / 2 8 (e.g. in Perl)

Ruby is strongly typed! (Java too)

Page 26: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Explicit: int a = 5 Implicit: a = 5

Ruby is implicitly typed! (Java explicitly)

Page 27: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Static typing

The compiler checks types during compilation

Dynamic typing

The compiler doesn‘t check types duringcompilation

Ruby uses dynamic typing (Java uses static typing)

Page 28: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

„Blocks are unnamed functions“

Page 29: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Define:

Call:

Result:

Page 30: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

The current piece ofthe collection we areworking with

What we are goingto do with it

Page 31: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

A closure object has:•code to run (the executable)•state around the code (the scope)

So you capture the environment, namely the local variables, in the closure. As a result, you can refer to the local variables inside a closure

Page 32: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Idea: Function returning a function

In action:

Page 33: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 34: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Ruby VM (Ruby 1.8) YARV (aka Ruby 1.9) Rubinius MacRuby Jruby IronRuby Hotruby

Page 35: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Gem:

Search:

Installing:

Page 36: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Gem:

Usage:

Page 37: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Enough with theJibber-Jabber

Page 38: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

XML Object

XML-Object

XmlSimple

XML Object

ROXML

XML::MAPPING

HappyMapper

Page 39: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

http://xml-object.rubyforge.org/

„Tools like JSON or YAML are a much

better fit for this kind of job, but one

doesn’t always have that luxury.“

Page 40: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

… attempts to make the accessing of small, well-formed XML structures convenient, by providing a syntax that fits well in most Ruby programs.

Page 41: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 42: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

>ruby test.rbAt first, Elements are checked: Bread RecepieYou can get the Attributes though: an awesome recepie for bread

Page 43: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Question notation

Elements or attributes that look like booleans are “booleanized” if called by their question names (such as enabled?)

Page 44: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Question notation

Elements or attributes that look like booleans are “booleanized” if called by their question names (such as enabled?)

Page 45: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Question notation

Elements or attributes that look like booleans are “booleanized” if called by their question names (such as enabled?)

Page 46: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Question notation

Elements or attributes that look like booleans are “booleanized” if called by their question names (such as enabled?)

Page 47: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Question notation

Elements or attributes that look like booleans are “booleanized” if called by their question names (such as enabled?)

Page 48: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

RecursiveThe design of the adapters assumes parsing of the objects recursively.Deep files are bound to throw SystemStackError, but for the kinds of files I need to read, things are working fine so far. In any case, stream parsing is on the TODO list.

Page 49: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

http://xml-simple.rubyforge.org/

a Ruby translation of Grant McLean's Perl module XML::Simple

Page 50: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

xml_in() xml_out()

Page 51: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 52: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

A hash containing options

The input file

Page 53: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Usage:

Page 54: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 55: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

http://roxml.rubyforge.org/

ROXML

Page 56: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

roxml_1.0_beta roxml-1.0_beta June 28, 2006

ROXML 1.0 roxml-1.0.zip July 1, 2006

ROXML 1.1 Beta ROXML 1.1 Beta September 24,

2006

ROXML 1.2 ROXML 1.2 November 10, 2007

ROXML 2.2.0 November 3, 2008

Page 57: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

ROXML Features Read Ruby objects from XML Write Ruby objects to XML Annotation-style methods for XML mapping One-to-one (composition) Ruby to XML One-to-many (aggregation) Ruby with array

to XML

Source: http://roxml.rubyforge.org

Page 58: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 59: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 60: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

http://xml-mapping.rubyforge.org/

≈ROXML

Page 61: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

XML::Mapping::ArrayNodeXML::Mapping::BooleanNodeXML::Mapping::HashNodeXML::Mapping::NumericNodeXML::Mapping::ObjectNodeXML::Mapping::SingleAttributeNodeXML::Mapping::SubObjectBaseNodeXML::Mapping::TextNode

XML::Mapping::ChoiceNode

single-attribute nodes}

Page 62: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 63: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

http://happymapper.rubyforge.org/

„Making XML fun again“

Page 64: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

has many

typecasts

Page 65: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Camel Case XML Tags to Ruby method names

Page 66: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 67: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

(rhymes with “camel”)

Page 68: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

1. easily readable by humans. 2. matches the native data structures of agile

languages. 3. portable between programming languages. 4. consistent model to support generic tools. 5. supports one-pass processing. 6. expressive and extensible. 7. easy to implement and use.

Page 69: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

JSON/YAML = human readable data interchange format

JSON == simplicity + universality trivial to generate and parse

reduced human readability

YAML == human readability + serializing native data structures harder to generate and parse

easy to read

Page 70: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

JSON

YAML

JSON.valid? YAML.valid!

Page 71: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

…is Sequences, Maps, Scalars

Seq = Array

Map = Hash

Scalars = String, Integer, Float, Time, NilClass

Page 72: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Sequence:

Array:

Page 73: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Map:

Hash:

Page 74: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Map ofScalars:

Hash ofObjects:

Native typing is implicity determined in plain scalars.

Page 75: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 76: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

YAML output:

YAML input:

Page 77: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de
Page 78: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

More than 1 document

Ruby code

Output

Page 79: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Won‘t somebody please think ofthe children objects!

Page 80: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Live Demo :D

Page 81: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Problem: The !ruby/object type is only understood by YAML.rb.

Solution:

Page 82: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

http://www.kuwata-lab.com/kwalify/

YAML and JSON are simple and nice format for structured data and easier for human to read and write than XML. But there have been no schema for YAML such as RelaxNG or DTD. Kwalify gets over this situation.

Page 83: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Fragen?

Page 84: Markup Languages und Anwendungenblog.marc-seeger.de/assets/2008/11/ruby-xml-mapping.pdf · 2013. 7. 13. · Markup Languages und Anwendungen Marc Seeger (20488) mail@marc-seeger.de

Each project‘s website Some useful closures in Ruby

http://www.randomhacks.net/articles/2007/02/01/some-useful-closures-in-ruby Kai Jäger: Ajax in der Praxis Grundlagen, Konzepte, Lösungen

ISBN-10: 3-540-69333-5 Using Ruby - An Introduction to Ruby for Java Programmers

http://onestepback.org/articles/usingruby/index.html Ruby for Java Programmers

http://www.softwaresummit.com/2006/speakers/BowlerRubyForJavaProgrammers.pdf Happy Mapper: Making XML fun again:

http://railstips.org/2008/11/17/happymapper-making-xml-fun-again YAML Working draft 1.2

http://yaml.org/spec/1.2/ YAML Cookbook:

http://www.nt.ntnu.no/users/haugwarb/Programming/YAML/YAML_for_ruby.html