CSStoXML v1.02

CSStoXML is a little command-line java-tool based on CSSParser for converting CSS2 to XML. There is also an option to XSL-transform generated XML. Requires JRE 1.4 or higher.

Downloads

License

Copyright Jukka Mäntylä (jmantyla@mit.jyu.fi). Licensed under GNU Lesser General Public License.

Usage

Command-line interface:

USAGE: java -jar csstoxml.jar
       <url> [(-x|--xslsheet) <xslstylesheet>] [(-m|--media) <media>]

  <url>                                Valid URL containing CSS2-stylesheet.         

  [(-x|--xslsheet) <xslstylesheet>]    XSL-stylesheet for transformation      

  [(-m|--media) <media>]               Comma-separated medialist for          
                                       CSS-stylesheet. Must not contain       
                                       spaces.

Output format

Document Type Definition (DTD)

<!DOCTYPE css [
  <!ELEMENT css (media)* >
  <!ELEMENT media (import|page|font-face|media|selector)*>
  <!ATTLIST media type CDATA "all">
  <!ELEMENT import (url+)>
  <!ATTLIST import media CDATA #IMPLIED>
  <!ELEMENT url (#PCDATA)>
  <!ELEMENT page (property*)>
  <!ATTLIST page name CDATA #IMPLIED>
  <!ATTLIST page selector CDATA #IMPLIED>
  <!ELEMENT font-face (property*)>
  <!ELEMENT selector (simple+,property+)>
  <!ELEMENT simple (#PCDATA)>
  <!ATTLIST simple type CDATA "0">
  <!ELEMENT property (name,value+)>
  <!ATTLIST property important CDATA #IMPLIED>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT value (operator|inherit|integer|number|unit|url|text|nest)*>
  <!ATTLIST value type CDATA #REQUIRED>
  <!ELEMENT operator (#PCDATA)>
  <!ELEMENT inherit EMPTY>
  <!ELEMENT integer (#PCDATA)>
  <!ELEMENT number (#PCDATA)>
  <!ELEMENT unit (#PCDATA)>
  <!ELEMENT text (#PCDATA)>
  <!ELEMENT nest (name,params)>
  <!ELEMENT params (operator|integer|number|unit|url|text|param)*>
  <!ELEMENT param (#PCDATA)>
]>

Output example

Output looks something like this:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE css [
-- snip --
]>
<css>
  <media type="all">
    <selector>
      <simple type="4">html</simple>
      <property>
        <name>width</name>
        <value type="23">
          <number>95.0</number>
          <unit>%</unit>
        </value>
      </property>
    </selector>
    <selector>
      <simple type="10">*.area</simple>
      <simple type="0">div.test</simple>
      <property>
        <name>font-family</name>
        <value type="36">
          <text>Courier New</text>
        </value>
        <value type="35">
          <text>sans-serif</text>
        </value>
      </property>
      <property>
        <name>background-color</name>
        <value type="27">
          <nest>
            <name>rgb</name>
            <params>
              <integer>176</integer>
              <integer>196</integer>
              <integer>222</integer>
            </params>
          </nest>
        </value>
      </property>
    </selector>
  </media>
</css>

Types

Selectors and types are also represented in numbers. Here is a list for equivalents:

SAC_OPERATOR_COMMA	= 0;
SAC_OPERATOR_PLUS	= 1;
SAC_OPERATOR_MINUS	= 2;
SAC_OPERATOR_MULTIPLY	= 3;
SAC_OPERATOR_SLASH	= 4;
SAC_OPERATOR_MOD	= 5;
SAC_OPERATOR_EXP	= 6;
SAC_OPERATOR_LT		= 7;
SAC_OPERATOR_GT		= 8;
SAC_OPERATOR_LE		= 9;
SAC_OPERATOR_GE		= 10;
SAC_OPERATOR_TILDE	= 11;
SAC_INHERIT		= 12;
SAC_INTEGER		= 13;
SAC_REAL		= 14;
SAC_EM			= 15;
SAC_EX			= 16;
SAC_PIXEL		= 17;
SAC_INCH		= 18;
SAC_CENTIMETER		= 19;
SAC_MILLIMETER		= 20;
SAC_POINT		= 21;
SAC_PICA		= 22;
SAC_PERCENTAGE		= 23;
SAC_URI		        = 24;
SAC_COUNTER_FUNCTION	= 25;
SAC_COUNTERS_FUNCTION	= 26;
SAC_RGBCOLOR		= 27;
SAC_DEGREE		= 28;
SAC_GRADIAN		= 29;
SAC_RADIAN		= 30;
SAC_MILLISECOND		= 31;
SAC_SECOND		= 32;
SAC_HERTZ		= 33;
SAC_KILOHERTZ		= 34;
SAC_IDENT		= 35;
SAC_STRING_VALUE	= 36;
SAC_ATTR	        = 37;
SAC_RECT_FUNCTION	= 38;
SAC_UNICODERANGE	= 39;
SAC_SUB_EXPRESSION	= 40;
SAC_FUNCTION		= 41;
SAC_DIMENSION		= 42;

Selectors

SAC_CONDITIONAL_SELECTOR                 = 0;
SAC_ANY_NODE_SELECTOR                    = 1;
SAC_ROOT_NODE_SELECTOR                   = 2;
SAC_NEGATIVE_SELECTOR                    = 3;
SAC_ELEMENT_NODE_SELECTOR                = 4;
SAC_TEXT_NODE_SELECTOR                   = 5;
SAC_CDATA_SECTION_NODE_SELECTOR 	 = 6;
SAC_PROCESSING_INSTRUCTION_NODE_SELECTOR = 7;
SAC_COMMENT_NODE_SELECTOR                = 8;
SAC_PSEUDO_ELEMENT_SELECTOR              = 9;
SAC_DESCENDANT_SELECTOR                  = 10;
SAC_CHILD_SELECTOR                       = 11;
SAC_DIRECT_ADJACENT_SELECTOR             = 12;

Käyttäjien kommentit

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/tools/csstoxml/
© Antti Ekonoja (antti.j.ekonoja@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
Jukka Mäntylä (jmantyla@iki.fi) <http://www.iki.fi/jmantyla/>
2011-03-01 11:48:29
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta