diff options
-rw-r--r-- | Docs/text2skin-1.1.rng | 899 | ||||
-rw-r--r-- | HISTORY | 1 |
2 files changed, 900 insertions, 0 deletions
diff --git a/Docs/text2skin-1.1.rng b/Docs/text2skin-1.1.rng new file mode 100644 index 0000000..41ee971 --- /dev/null +++ b/Docs/text2skin-1.1.rng @@ -0,0 +1,899 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Experimantal RELAX NG schema for text2skin (skin) version 1.1 skins. + +Usage: +* With jing, <http://code.google.com/p/jing-trang/>: + java -jar jing.jar text2skin-1.1.rng foo.skin +* With msv, <http://msv.dev.java.net/>: + java -jar msv.jar text2skin-1.1.rng foo.skin +* With xmllint, <http://xmlsoft.org/>: + xmllint -noout -relaxng text2skin-1.1.rng foo.skin +* With xmlstarlet, <http://xmlstarlet.sourceforge.net/>: + xmlstarlet val -e -r text2skin-1.1.rng foo.skin + +jing and msv seem to produce more to-the-point, easier to understand error +messages than xmllint or xmlstarlet as of jing 20091111, msv 20090415 and +libxml 2.7.7, YMMV. + +Known/potential issues: +* <block> handling may not be flexible enough, see for example izegrey16.skin + (izegrey16 1.0-20050304, <http://skins.vdr-developer.org/text2skin/>) + <display id="volume"> + <block condition="not({VolumeIsMute})"> + <window ...> + ... + </window> + </block> + </display> + ...and we may have the same issues with allowing nonsensical element + combinations in other cases as well, would probably need some <group>s + and <choice>s. +* See TODO comments below. +--> +<grammar ns="" + xmlns="http://relaxng.org/ns/structure/1.0" + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + + <start> + + <element name="skin"> + <attribute name="version"> + <data type="token"> + <!-- TODO: or enforce 1.1? --> + <param name="pattern">\d+\.\d+</param> + </data> + </attribute> + <attribute name="name"> + <ref name="nonEmptyNormalizedStringValue"/> + </attribute> + <attribute name="screenBase"> + <choice> + <value>relative</value> + <value>absolute</value> + <value>abs1280x720</value> + <value>abs1920x1080</value> + </choice> + </attribute> + + <oneOrMore> + <ref name="displayElement"/> + </oneOrMore> + </element> + + </start> + + <!-- Elements --> + + <define name="blinkElement"> + <element name="blink"> + <ref name="textAttributes"/> + <optional> + <attribute name="blinkColor"> + <ref name="colorValue"/> + </attribute> + </optional> + <ref name="delayAttribute"/> + <ref name="nonEmptyStringValue"/> + </element> + </define> + + <define name="blockElement"> + <element name="block"> + <ref name="commonAttributes"/> + <ref name="widthHeightAttributes"/> + <interleave> + <zeroOrMore> + <ref name="blinkElement"/> + </zeroOrMore> + <!-- TODO: is block allowed here (nested blocks)? --> + <zeroOrMore> + <ref name="blockElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="ellipseElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="imageElement"/> + </zeroOrMore> + <!-- TODO: is item allowed here? --> + <!-- TODO: is list allowed here? --> + <zeroOrMore> + <ref name="listElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="marqueeElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="progressElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="rectangleElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="scrollbarElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="scrolltextElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="slopeElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="textElement"/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name="displayElement"> + <element name="display"> + <attribute name="id"> + <choice> + <value>channelInfo</value> + <value>channelSmall</value> + <value>volume</value> + <value>audioTracks</value> + <value>message</value> + <value>replayInfo</value> + <value>replaySmall</value> + <value>menu</value> + </choice> + </attribute> + <ref name="refreshAttribute"/> + + <oneOrMore> + <ref name="windowElement"/> + </oneOrMore> + <interleave> + <zeroOrMore> + <ref name="blinkElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="blockElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="ellipseElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="imageElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="listElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="marqueeElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="progressElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="rectangleElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="scrollbarElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="scrolltextElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="slopeElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="textElement"/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name="ellipseElement"> + <element name="ellipse"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + <ref name="arcAttribute"/> + </element> + </define> + + <define name="imageElement"> + <element name="image"> + <optional> + <attribute name="x"> + <ref name="xValue"/> + </attribute> + </optional> + <optional> + <attribute name="y"> + <ref name="yValue"/> + </attribute> + </optional> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <optional> + <attribute name="alpha"> + <data type="unsignedByte"/> + </attribute> + </optional> + <optional> + <attribute name="colors"> + <data type="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="bgColor"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="maskColor"> + <ref name="colorValue"/> + </attribute> + </optional> + <attribute name="path"> + <data type="string"> + <param name="minLength">1</param> + </data> + </attribute> + </element> + </define> + + <define name="itemElement"> + <element name="item"> + <ref name="commonAttributes"/> + <optional> + <attribute name="height"> + <data type="positiveInteger"/> + </attribute> + </optional> + </element> + </define> + + <define name="listElement"> + <element name="list"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <ref name="widthHeightAttributes"/> + <ref name="itemElement"/> + <interleave> + <zeroOrMore> + <ref name="blinkElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="blockElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="ellipseElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="imageElement"/> + </zeroOrMore> + <!-- TODO: is list allowed here (nested lists)? --> + <zeroOrMore> + <ref name="marqueeElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="progressElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="rectangleElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="scrollbarElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="scrolltextElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="slopeElement"/> + </zeroOrMore> + <zeroOrMore> + <ref name="textElement"/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name="marqueeElement"> + <element name="marquee"> + <ref name="textAttributes"/> + <ref name="delayAttribute"/> + <ref name="nonEmptyStringValue"/> + </element> + </define> + + <define name="progressElement"> + <element name="progress"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <optional> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="bgColor"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="mark"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="active"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="keep"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="current"> + <ref name="nonEmptyNormalizedStringValue"/> + </attribute> + <attribute name="total"> + <ref name="nonEmptyNormalizedStringValue"/> + </attribute> + </optional> + </element> + </define> + + <define name="rectangleElement"> + <element name="rectangle"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + </element> + </define> + + <define name="scrollbarElement"> + <element name="scrollbar"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <optional> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="bgColor"> + <ref name="colorValue"/> + </attribute> + </optional> + </element> + </define> + + <define name="scrolltextElement"> + <element name="scrolltext"> + <ref name="textAttributes"/> + <ref name="nonEmptyStringValue"/> + </element> + </define> + + <define name="slopeElement"> + <element name="slope"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + <ref name="arcAttribute"/> + </element> + </define> + + <define name="textElement"> + <element name="text"> + <ref name="textAttributes"/> + <ref name="nonEmptyStringValue"/> + </element> + </define> + + <define name="windowElement"> + <element name="window"> + <ref name="positionAttributes"/> + <attribute name="bpp"> + <data type="positiveInteger"> + <param name="maxInclusive">32</param> + </data> + </attribute> + </element> + </define> + + <!-- Individual attributes --> + + <define name="arcAttribute"> + <optional> + <attribute name="arc"> + <data type="byte"> + <param name="minInclusive">-8</param> + <param name="maxInclusive">8</param> + </data> + </attribute> + </optional> + </define> + + <define name="delayAttribute"> + <optional> + <attribute name="delay"> + <data type="positiveInteger"/> + </attribute> + </optional> + </define> + + <define name="refreshAttribute"> + <optional> + <attribute name="refresh"> + <choice> + <value>always</value> + <value>full</value> + <value>force</value> + <!-- TODO: *cough*... but for now generated with Python: + from itertools import permutations + refresh = ("all", "timeout", "update", "list", "scroll") + for i in range(1, len(refresh)+1): + for j in permutations(refresh, i): + print " <value>%s</value>" % ",".join(j) + --> + <value>all</value> + <value>timeout</value> + <value>update</value> + <value>list</value> + <value>scroll</value> + <value>all,timeout</value> + <value>all,update</value> + <value>all,list</value> + <value>all,scroll</value> + <value>timeout,all</value> + <value>timeout,update</value> + <value>timeout,list</value> + <value>timeout,scroll</value> + <value>update,all</value> + <value>update,timeout</value> + <value>update,list</value> + <value>update,scroll</value> + <value>list,all</value> + <value>list,timeout</value> + <value>list,update</value> + <value>list,scroll</value> + <value>scroll,all</value> + <value>scroll,timeout</value> + <value>scroll,update</value> + <value>scroll,list</value> + <value>all,timeout,update</value> + <value>all,timeout,list</value> + <value>all,timeout,scroll</value> + <value>all,update,timeout</value> + <value>all,update,list</value> + <value>all,update,scroll</value> + <value>all,list,timeout</value> + <value>all,list,update</value> + <value>all,list,scroll</value> + <value>all,scroll,timeout</value> + <value>all,scroll,update</value> + <value>all,scroll,list</value> + <value>timeout,all,update</value> + <value>timeout,all,list</value> + <value>timeout,all,scroll</value> + <value>timeout,update,all</value> + <value>timeout,update,list</value> + <value>timeout,update,scroll</value> + <value>timeout,list,all</value> + <value>timeout,list,update</value> + <value>timeout,list,scroll</value> + <value>timeout,scroll,all</value> + <value>timeout,scroll,update</value> + <value>timeout,scroll,list</value> + <value>update,all,timeout</value> + <value>update,all,list</value> + <value>update,all,scroll</value> + <value>update,timeout,all</value> + <value>update,timeout,list</value> + <value>update,timeout,scroll</value> + <value>update,list,all</value> + <value>update,list,timeout</value> + <value>update,list,scroll</value> + <value>update,scroll,all</value> + <value>update,scroll,timeout</value> + <value>update,scroll,list</value> + <value>list,all,timeout</value> + <value>list,all,update</value> + <value>list,all,scroll</value> + <value>list,timeout,all</value> + <value>list,timeout,update</value> + <value>list,timeout,scroll</value> + <value>list,update,all</value> + <value>list,update,timeout</value> + <value>list,update,scroll</value> + <value>list,scroll,all</value> + <value>list,scroll,timeout</value> + <value>list,scroll,update</value> + <value>scroll,all,timeout</value> + <value>scroll,all,update</value> + <value>scroll,all,list</value> + <value>scroll,timeout,all</value> + <value>scroll,timeout,update</value> + <value>scroll,timeout,list</value> + <value>scroll,update,all</value> + <value>scroll,update,timeout</value> + <value>scroll,update,list</value> + <value>scroll,list,all</value> + <value>scroll,list,timeout</value> + <value>scroll,list,update</value> + <value>all,timeout,update,list</value> + <value>all,timeout,update,scroll</value> + <value>all,timeout,list,update</value> + <value>all,timeout,list,scroll</value> + <value>all,timeout,scroll,update</value> + <value>all,timeout,scroll,list</value> + <value>all,update,timeout,list</value> + <value>all,update,timeout,scroll</value> + <value>all,update,list,timeout</value> + <value>all,update,list,scroll</value> + <value>all,update,scroll,timeout</value> + <value>all,update,scroll,list</value> + <value>all,list,timeout,update</value> + <value>all,list,timeout,scroll</value> + <value>all,list,update,timeout</value> + <value>all,list,update,scroll</value> + <value>all,list,scroll,timeout</value> + <value>all,list,scroll,update</value> + <value>all,scroll,timeout,update</value> + <value>all,scroll,timeout,list</value> + <value>all,scroll,update,timeout</value> + <value>all,scroll,update,list</value> + <value>all,scroll,list,timeout</value> + <value>all,scroll,list,update</value> + <value>timeout,all,update,list</value> + <value>timeout,all,update,scroll</value> + <value>timeout,all,list,update</value> + <value>timeout,all,list,scroll</value> + <value>timeout,all,scroll,update</value> + <value>timeout,all,scroll,list</value> + <value>timeout,update,all,list</value> + <value>timeout,update,all,scroll</value> + <value>timeout,update,list,all</value> + <value>timeout,update,list,scroll</value> + <value>timeout,update,scroll,all</value> + <value>timeout,update,scroll,list</value> + <value>timeout,list,all,update</value> + <value>timeout,list,all,scroll</value> + <value>timeout,list,update,all</value> + <value>timeout,list,update,scroll</value> + <value>timeout,list,scroll,all</value> + <value>timeout,list,scroll,update</value> + <value>timeout,scroll,all,update</value> + <value>timeout,scroll,all,list</value> + <value>timeout,scroll,update,all</value> + <value>timeout,scroll,update,list</value> + <value>timeout,scroll,list,all</value> + <value>timeout,scroll,list,update</value> + <value>update,all,timeout,list</value> + <value>update,all,timeout,scroll</value> + <value>update,all,list,timeout</value> + <value>update,all,list,scroll</value> + <value>update,all,scroll,timeout</value> + <value>update,all,scroll,list</value> + <value>update,timeout,all,list</value> + <value>update,timeout,all,scroll</value> + <value>update,timeout,list,all</value> + <value>update,timeout,list,scroll</value> + <value>update,timeout,scroll,all</value> + <value>update,timeout,scroll,list</value> + <value>update,list,all,timeout</value> + <value>update,list,all,scroll</value> + <value>update,list,timeout,all</value> + <value>update,list,timeout,scroll</value> + <value>update,list,scroll,all</value> + <value>update,list,scroll,timeout</value> + <value>update,scroll,all,timeout</value> + <value>update,scroll,all,list</value> + <value>update,scroll,timeout,all</value> + <value>update,scroll,timeout,list</value> + <value>update,scroll,list,all</value> + <value>update,scroll,list,timeout</value> + <value>list,all,timeout,update</value> + <value>list,all,timeout,scroll</value> + <value>list,all,update,timeout</value> + <value>list,all,update,scroll</value> + <value>list,all,scroll,timeout</value> + <value>list,all,scroll,update</value> + <value>list,timeout,all,update</value> + <value>list,timeout,all,scroll</value> + <value>list,timeout,update,all</value> + <value>list,timeout,update,scroll</value> + <value>list,timeout,scroll,all</value> + <value>list,timeout,scroll,update</value> + <value>list,update,all,timeout</value> + <value>list,update,all,scroll</value> + <value>list,update,timeout,all</value> + <value>list,update,timeout,scroll</value> + <value>list,update,scroll,all</value> + <value>list,update,scroll,timeout</value> + <value>list,scroll,all,timeout</value> + <value>list,scroll,all,update</value> + <value>list,scroll,timeout,all</value> + <value>list,scroll,timeout,update</value> + <value>list,scroll,update,all</value> + <value>list,scroll,update,timeout</value> + <value>scroll,all,timeout,update</value> + <value>scroll,all,timeout,list</value> + <value>scroll,all,update,timeout</value> + <value>scroll,all,update,list</value> + <value>scroll,all,list,timeout</value> + <value>scroll,all,list,update</value> + <value>scroll,timeout,all,update</value> + <value>scroll,timeout,all,list</value> + <value>scroll,timeout,update,all</value> + <value>scroll,timeout,update,list</value> + <value>scroll,timeout,list,all</value> + <value>scroll,timeout,list,update</value> + <value>scroll,update,all,timeout</value> + <value>scroll,update,all,list</value> + <value>scroll,update,timeout,all</value> + <value>scroll,update,timeout,list</value> + <value>scroll,update,list,all</value> + <value>scroll,update,list,timeout</value> + <value>scroll,list,all,timeout</value> + <value>scroll,list,all,update</value> + <value>scroll,list,timeout,all</value> + <value>scroll,list,timeout,update</value> + <value>scroll,list,update,all</value> + <value>scroll,list,update,timeout</value> + <value>all,timeout,update,list,scroll</value> + <value>all,timeout,update,scroll,list</value> + <value>all,timeout,list,update,scroll</value> + <value>all,timeout,list,scroll,update</value> + <value>all,timeout,scroll,update,list</value> + <value>all,timeout,scroll,list,update</value> + <value>all,update,timeout,list,scroll</value> + <value>all,update,timeout,scroll,list</value> + <value>all,update,list,timeout,scroll</value> + <value>all,update,list,scroll,timeout</value> + <value>all,update,scroll,timeout,list</value> + <value>all,update,scroll,list,timeout</value> + <value>all,list,timeout,update,scroll</value> + <value>all,list,timeout,scroll,update</value> + <value>all,list,update,timeout,scroll</value> + <value>all,list,update,scroll,timeout</value> + <value>all,list,scroll,timeout,update</value> + <value>all,list,scroll,update,timeout</value> + <value>all,scroll,timeout,update,list</value> + <value>all,scroll,timeout,list,update</value> + <value>all,scroll,update,timeout,list</value> + <value>all,scroll,update,list,timeout</value> + <value>all,scroll,list,timeout,update</value> + <value>all,scroll,list,update,timeout</value> + <value>timeout,all,update,list,scroll</value> + <value>timeout,all,update,scroll,list</value> + <value>timeout,all,list,update,scroll</value> + <value>timeout,all,list,scroll,update</value> + <value>timeout,all,scroll,update,list</value> + <value>timeout,all,scroll,list,update</value> + <value>timeout,update,all,list,scroll</value> + <value>timeout,update,all,scroll,list</value> + <value>timeout,update,list,all,scroll</value> + <value>timeout,update,list,scroll,all</value> + <value>timeout,update,scroll,all,list</value> + <value>timeout,update,scroll,list,all</value> + <value>timeout,list,all,update,scroll</value> + <value>timeout,list,all,scroll,update</value> + <value>timeout,list,update,all,scroll</value> + <value>timeout,list,update,scroll,all</value> + <value>timeout,list,scroll,all,update</value> + <value>timeout,list,scroll,update,all</value> + <value>timeout,scroll,all,update,list</value> + <value>timeout,scroll,all,list,update</value> + <value>timeout,scroll,update,all,list</value> + <value>timeout,scroll,update,list,all</value> + <value>timeout,scroll,list,all,update</value> + <value>timeout,scroll,list,update,all</value> + <value>update,all,timeout,list,scroll</value> + <value>update,all,timeout,scroll,list</value> + <value>update,all,list,timeout,scroll</value> + <value>update,all,list,scroll,timeout</value> + <value>update,all,scroll,timeout,list</value> + <value>update,all,scroll,list,timeout</value> + <value>update,timeout,all,list,scroll</value> + <value>update,timeout,all,scroll,list</value> + <value>update,timeout,list,all,scroll</value> + <value>update,timeout,list,scroll,all</value> + <value>update,timeout,scroll,all,list</value> + <value>update,timeout,scroll,list,all</value> + <value>update,list,all,timeout,scroll</value> + <value>update,list,all,scroll,timeout</value> + <value>update,list,timeout,all,scroll</value> + <value>update,list,timeout,scroll,all</value> + <value>update,list,scroll,all,timeout</value> + <value>update,list,scroll,timeout,all</value> + <value>update,scroll,all,timeout,list</value> + <value>update,scroll,all,list,timeout</value> + <value>update,scroll,timeout,all,list</value> + <value>update,scroll,timeout,list,all</value> + <value>update,scroll,list,all,timeout</value> + <value>update,scroll,list,timeout,all</value> + <value>list,all,timeout,update,scroll</value> + <value>list,all,timeout,scroll,update</value> + <value>list,all,update,timeout,scroll</value> + <value>list,all,update,scroll,timeout</value> + <value>list,all,scroll,timeout,update</value> + <value>list,all,scroll,update,timeout</value> + <value>list,timeout,all,update,scroll</value> + <value>list,timeout,all,scroll,update</value> + <value>list,timeout,update,all,scroll</value> + <value>list,timeout,update,scroll,all</value> + <value>list,timeout,scroll,all,update</value> + <value>list,timeout,scroll,update,all</value> + <value>list,update,all,timeout,scroll</value> + <value>list,update,all,scroll,timeout</value> + <value>list,update,timeout,all,scroll</value> + <value>list,update,timeout,scroll,all</value> + <value>list,update,scroll,all,timeout</value> + <value>list,update,scroll,timeout,all</value> + <value>list,scroll,all,timeout,update</value> + <value>list,scroll,all,update,timeout</value> + <value>list,scroll,timeout,all,update</value> + <value>list,scroll,timeout,update,all</value> + <value>list,scroll,update,all,timeout</value> + <value>list,scroll,update,timeout,all</value> + <value>scroll,all,timeout,update,list</value> + <value>scroll,all,timeout,list,update</value> + <value>scroll,all,update,timeout,list</value> + <value>scroll,all,update,list,timeout</value> + <value>scroll,all,list,timeout,update</value> + <value>scroll,all,list,update,timeout</value> + <value>scroll,timeout,all,update,list</value> + <value>scroll,timeout,all,list,update</value> + <value>scroll,timeout,update,all,list</value> + <value>scroll,timeout,update,list,all</value> + <value>scroll,timeout,list,all,update</value> + <value>scroll,timeout,list,update,all</value> + <value>scroll,update,all,timeout,list</value> + <value>scroll,update,all,list,timeout</value> + <value>scroll,update,timeout,all,list</value> + <value>scroll,update,timeout,list,all</value> + <value>scroll,update,list,all,timeout</value> + <value>scroll,update,list,timeout,all</value> + <value>scroll,list,all,timeout,update</value> + <value>scroll,list,all,update,timeout</value> + <value>scroll,list,timeout,all,update</value> + <value>scroll,list,timeout,update,all</value> + <value>scroll,list,update,all,timeout</value> + <value>scroll,list,update,timeout,all</value> + </choice> + </attribute> + </optional> + </define> + + <!-- Attribute collections --> + + <define name="commonAttributes"> + <optional> + <attribute name="condition"> + <ref name="nonEmptyNormalizedStringValue"/> + </attribute> + </optional> + <ref name="refreshAttribute"/> + <optional> + <attribute name="changed"> + <ref name="nonEmptyNormalizedStringValue"/> + </attribute> + </optional> + </define> + + <define name="positionAttributes"> + <optional> + <attribute name="x1"> + <ref name="xValue"/> + </attribute> + </optional> + <optional> + <attribute name="y1"> + <ref name="yValue"/> + </attribute> + </optional> + <optional> + <attribute name="x2"> + <ref name="xValue"/> + </attribute> + </optional> + <optional> + <attribute name="y2"> + <ref name="yValue"/> + </attribute> + </optional> + </define> + + <define name="textAttributes"> + <ref name="positionAttributes"/> + <ref name="commonAttributes"/> + <optional> + <attribute name="color"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="bgColor"> + <ref name="colorValue"/> + </attribute> + </optional> + <optional> + <attribute name="align"> + <choice> + <value>center</value> + <value>right</value> + <value>left</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="font"> + <data type="normalizedString"> + <param name="pattern">[^@]+(@\d+(,\d+)?)?</param> + </data> + </attribute> + </optional> + </define> + + <define name="widthHeightAttributes"> + <optional> + <attribute name="w"> + <!-- TODO --> + <ref name="xValue"/> + </attribute> + </optional> + <optional> + <attribute name="h"> + <!-- TODO --> + <ref name="yValue"/> + </attribute> + </optional> + </define> + + <!-- Values --> + + <define name="colorValue"> + <!-- #AARRGGBB (hex) or symbolic name from *.colors (can't check) --> + <ref name="nonEmptyNormalizedStringValue"/> + </define> + + <define name="nonEmptyNormalizedStringValue"> + <data type="normalizedString"> + <param name="minLength">1</param> + </data> + </define> + + <define name="nonEmptyStringValue"> + <data type="string"> + <param name="minLength">1</param> + </data> + </define> + + <define name="xValue"> + <data type="integer"> + <!-- TODO --> + <param name="minInclusive">-2000</param> + <param name="maxInclusive">2000</param> + </data> + </define> + + <define name="yValue"> + <data type="integer"> + <!-- TODO --> + <param name="minInclusive">-2000</param> + <param name="maxInclusive">2000</param> + </data> + </define> + +</grammar> @@ -5,6 +5,7 @@ VDR Plugin 'text2skin' Revision History - Fix build with ImageMagick >= 6.6.2 (thanks to Anssi Hannula / closes #409) - Documentation spelling fixes. +- Added experimental RELAX NG schema for skin XML files. 2010-06-21: Version 1.3.1 |