2009年1月15日木曜日

XHTML+SVGをValidateする

追記(2009/01/19):
  • xhtmlの拡張ポイントはblock groupでなくinline groupの方がmixedな環境で使えるので変更
  • XHTML+SVG+MathML版

  • 追記:JNVDLでやったのはこちら



    コード(Test.java)はこちら

    xhtml_svg.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title/></head>
    <body>
    <h1>XHTML にインラインで埋め込まれた SVG</h1>
    <svg xmlns="http://www.w3.org/2000/svg" width="300px" height="200px">
    <circle cx="150" cy="100" r="50" fill="#ff0000"/>
    </svg>
    </body>
    </html>



    xhtml.xsd
    http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd

    修正
    pattern要素のvalue属性の値中にでてくる次のパターンで'-'を'\-'とする: "[-+]?(\d+|\d+(\.\d+)?%)"を"[\-+]?(\d+|\d+(\.\d+)?%)"とする(複数箇所).


    で,xsdのredefineで混ぜる.
    xhtml_svg.xsd
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema targetNamespace="http://www.w3.org/1999/xhtml"
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:import namespace="http://www.w3.org/2000/svg" schemaLocation="svg.xsd"/>

    <xsd:redefine schemaLocation="xhtml.xsd">
    <xsd:group name="inline">
    <xsd:sequence>
    <xsd:element ref="svg:svg" />
    <xsd:group ref="xhtml:inline" />
    </xsd:sequence>
    </xsd:group>
    </xsd:redefine>


    </xsd:schema>


    > java Test xhtml_svg.xsd xhtml_svg.xml


    間違い等あればコメントいただければ幸いです.

    0 件のコメント: