switch input validation from DTD to XSD

git-svn-id: svn://svn.c3d2.de/c3d2-web/trunk@1459 31f61c52-7bfb-0310-b897-fc00f8a278f0
This commit is contained in:
astro 2009-02-01 07:21:21 +00:00
parent fb737b7bd7
commit e805a09dc8
6 changed files with 2412 additions and 6 deletions

View File

@ -9,7 +9,7 @@ BASEURL=""
# XML-Validator
VALIDATOR=xmllint
# VALIDATOR-Flags für Eingabe-XML (meist c3d2web)
VFLAGS_IN=--noout --valid --catalogs
VFLAGS_IN=--noout --schema xsd/c3d2web.xsd
# VALIDATOR-Flags für Ausgabe-XML (xhtml, rss, atom, ...)
VFLAGS_OUT=$(VFLAGS_IN)
SGML_CATALOG_FILES=$(XML_CATALOG)
@ -94,6 +94,7 @@ $(DATESTAMP):
### Regeln für den XSLT-Prozess ###
build/%.html : VFLAGS_OUT=--noout --schema xsd/xhtml1-strict.xsd
build/news.html: $(WWW_CCC_DE_UPDATES) $(CALENDAR_SUMMARY) $(DATESTAMP)
build/news-rss.xml : STYLE=xsl/rss.xsl
build/news-rss.xml : NOVALID_IGNORE:=true
@ -170,6 +171,7 @@ build/cgi-bin/search.html: content/cgi-bin/search.xml $(STYLE) $(NAVIGATION) $(D
build/datenspuren/%html : STYLE=$(DS_STYLE)
build/datenspuren/%.html: content/datenspuren/%.xml $(DS_STYLE)
$(call xml_process)
build/datenspuren/schedule.html : VFLAGS_IN=--noout --schema xsd/xhtml1-strict.xsd
build/datenspuren/schedule.html : NOVALID_IGNORE:=true
#content/datenspuren/schedule.xml: content/static/datenspuren/fahrplan/days.de.html

View File

@ -7,7 +7,7 @@
<p title="Ort">Das Symposium findet
im <link href="http://www.scheune.org/"
title="http://www.scheune.org/">Kulturzentrum Scheune</link>
>Kulturzentrum Scheune</link>
Alaunstr. 36-40, 01099 Dresden, statt.</p>
<dl>

View File

@ -452,11 +452,14 @@ td.calsun3 {
}
table.calendar tr td ul {
list-style-type: none;
font-size: 70%;
padding: 2px 0px;
margin: 0px;
}
table.calendar tr td ul li {
list-style-type: none;
list-style-image: none;
}
/* -- MIME Icons -- */
/* Icons from the Tango Project, http://art.gnome.org/themes/icon/1150 */

192
xsd/c3d2web.xsd Normal file
View File

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="page">
<xs:complexType>
<xs:choice>
<xs:element ref="news"/>
<xs:group ref="Block.class" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="pagetitle" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="news">
<xs:complexType>
<xs:sequence>
<xs:element ref="newsfile" minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="newsfile" type="xs:anyURI"/>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="image" minOccurs="0"/>
<xs:element ref="event" minOccurs="0"/>
<xs:group ref="Block.class" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="addendum" minOccurs="0"/>
<xs:element ref="resource" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="date" type="xs:dateTime" use="required"/>
<xs:attribute name="author" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="addendum">
<xs:complexType>
<xs:sequence>
<xs:group ref="Block.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="resource">
<xs:complexType>
<xs:sequence>
<xs:element ref="alternative" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="size" type="xs:nonNegativeInteger"
use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="hide" type="xs:string" use="optional"/>
<xs:attribute name="title" type="xs:string" use="optional"/>
<xs:attribute name="url" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="alternative">
<xs:complexType>
<xs:attribute name="size" type="xs:nonNegativeInteger"
use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="url" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<xs:group name="Block.class">
<xs:choice>
<xs:element ref="p"/>
<xs:element ref="pre"/>
<xs:element ref="dl"/>
<xs:element ref="ul"/>
<xs:element ref="ol"/>
<xs:element ref="news-list"/>
</xs:choice>
</xs:group>
<xs:complexType name="Block" mixed="true">
<xs:sequence>
<xs:group ref="Inline.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:group name="Inline.class">
<xs:choice>
<xs:element ref="link"/>
<xs:element ref="link"/>
<xs:element ref="em"/>
<xs:element ref="image"/>
</xs:choice>
</xs:group>
<xs:element name="news-list">
<xs:complexType>
<xs:attribute name="prefix" type="xs:string" use="optional"/>
<xs:attribute name="details" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="p">
<xs:complexType>
<xs:complexContent>
<xs:extension base="Block">
<xs:attribute name="class" type="xs:string" use="optional"/>
<xs:attribute name="title" type="xs:string" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="link">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="image" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="href" type="xs:anyURI" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="image">
<xs:complexType mixed="true">
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="class" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="pre" type="xs:string"/>
<xs:element name="em" type="xs:string"/>
<xs:element name="dl">
<xs:complexType>
<xs:sequence>
<xs:element ref="dh" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element ref="dt"/>
<xs:element ref="dd"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dh" type="Block"/>
<xs:element name="dt" type="Block"/>
<xs:element name="dd" type="Block"/>
<xs:complexType name="List">
<xs:sequence>
<xs:element ref="li" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ul" type="List"/>
<xs:element name="ol" type="List"/>
<xs:element name="li">
<xs:complexType mixed="true">
<xs:choice maxOccurs="unbounded">
<xs:group ref="Inline.class" minOccurs="0"
maxOccurs="unbounded"/>
<xs:group ref="Block.class" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:simpleType name="dateOrDateTime">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:date"/>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:dateTime"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:element name="event">
<xs:complexType>
<xs:sequence>
<xs:element name="start" type="dateOrDateTime"/>
<xs:element name="end" type="dateOrDateTime" minOccurs="0"/>
<xs:element name="location" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

2211
xsd/xhtml1-strict.xsd Normal file

File diff suppressed because it is too large Load Diff

View File

@ -125,9 +125,7 @@
</xsl:call-template>
</xsl:variable>
<xsl:if test="string-length(normalize-space($dholiday)) &gt; 0">
<li><xsl:value-of select="normalize-space($dholiday)"/></li>
</xsl:if>
<li><xsl:value-of select="normalize-space($dholiday)"/></li>
</ul>
</td>
<xsl:if test="date:day-in-week($date) != 1"> <!-- Sunday? Break and return to output-week... -->