validate-website 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +15 -4
- data/Rakefile +6 -4
- data/bin/validate-website +33 -36
- data/lib/colorful_messages.rb +7 -10
- data/lib/validator.rb +37 -0
- data/lib/xhtml/xframes-1.xsd +166 -0
- data/lib/xhtml/xhtml-access-1.xsd +43 -0
- data/lib/xhtml/xhtml-applet-1.xsd +66 -0
- data/lib/xhtml/xhtml-attribs-1.xsd +67 -0
- data/lib/xhtml/xhtml-base-1.xsd +31 -0
- data/lib/xhtml/xhtml-basic-form-1.xsd +195 -0
- data/lib/xhtml/xhtml-basic-table-1.xsd +169 -0
- data/lib/xhtml/xhtml-basic10-model-1.xsd +385 -0
- data/lib/xhtml/xhtml-basic10-module-redefines-1.xsd +61 -0
- data/lib/xhtml/xhtml-basic10-modules-1.xsd +233 -0
- data/lib/xhtml/xhtml-basic10.xsd +99 -0
- data/lib/xhtml/xhtml-basic11-model-1.xsd +622 -0
- data/lib/xhtml/xhtml-basic11-modules-1.xsd +508 -0
- data/lib/xhtml/xhtml-basic11.xsd +105 -0
- data/lib/xhtml/xhtml-bdo-1.xsd +72 -0
- data/lib/xhtml/xhtml-blkphras-1.xsd +155 -0
- data/lib/xhtml/xhtml-blkpres-1.xsd +32 -0
- data/lib/xhtml/xhtml-blkstruct-1.xsd +44 -0
- data/lib/xhtml/xhtml-charent-1.xsd +38 -0
- data/lib/xhtml/xhtml-copyright-1.xsd +29 -0
- data/lib/xhtml/xhtml-csismap-1.xsd +91 -0
- data/lib/xhtml/xhtml-datatypes-1.xsd +177 -0
- data/lib/xhtml/xhtml-edit-1.xsd +34 -0
- data/lib/xhtml/xhtml-events-1.xsd +130 -0
- data/lib/xhtml/xhtml-form-1.xsd +321 -0
- data/lib/xhtml/xhtml-frames-1.xsd +113 -0
- data/lib/xhtml/xhtml-framework-1.xsd +62 -0
- data/lib/xhtml/xhtml-hypertext-1.xsd +47 -0
- data/lib/xhtml/xhtml-iframe-1.xsd +68 -0
- data/lib/xhtml/xhtml-image-1.xsd +40 -0
- data/lib/xhtml/xhtml-inlphras-1.xsd +158 -0
- data/lib/xhtml/xhtml-inlpres-1.xsd +34 -0
- data/lib/xhtml/xhtml-inlstruct-1.xsd +45 -0
- data/lib/xhtml/xhtml-inlstyle-1.xsd +22 -0
- data/lib/xhtml/xhtml-inputmode-1.xsd +35 -0
- data/lib/xhtml/xhtml-lat1.ent +196 -0
- data/lib/xhtml/xhtml-legacy-1.xsd +97 -0
- data/lib/xhtml/xhtml-link-1.xsd +45 -0
- data/lib/xhtml/xhtml-list-1.xsd +94 -0
- data/lib/xhtml/xhtml-meta-1.xsd +54 -0
- data/lib/xhtml/xhtml-metaAttributes-1.xsd +39 -0
- data/lib/xhtml/xhtml-misc-1.xsd +441 -0
- data/lib/xhtml/xhtml-nameident-1.xsd +63 -0
- data/lib/xhtml/xhtml-notations-1.xsd +69 -0
- data/lib/xhtml/xhtml-object-1.xsd +71 -0
- data/lib/xhtml/xhtml-param-1.xsd +46 -0
- data/lib/xhtml/xhtml-pres-1.xsd +46 -0
- data/lib/xhtml/xhtml-print-1.xsd +85 -0
- data/lib/xhtml/xhtml-print-model-1.xsd +604 -0
- data/lib/xhtml/xhtml-print-modules-1.xsd +422 -0
- data/lib/xhtml/xhtml-rdfa-1.dtd +438 -0
- data/lib/xhtml/xhtml-rdfa-1.xsd +116 -0
- data/lib/xhtml/xhtml-rdfa-model-1.xsd +461 -0
- data/lib/xhtml/xhtml-rdfa-modules-1.xsd +548 -0
- data/lib/xhtml/xhtml-ruby-1.xsd +170 -0
- data/lib/xhtml/xhtml-ruby-basic-1.xsd +84 -0
- data/lib/xhtml/xhtml-script-1.xsd +65 -0
- data/lib/xhtml/xhtml-special.ent +80 -0
- data/lib/xhtml/xhtml-ssismap-1.xsd +38 -0
- data/lib/xhtml/xhtml-struct-1.xsd +85 -0
- data/lib/xhtml/xhtml-style-1.xsd +47 -0
- data/lib/xhtml/xhtml-symbol.ent +237 -0
- data/lib/xhtml/xhtml-table-1.xsd +267 -0
- data/lib/xhtml/xhtml-target-1.xsd +49 -0
- data/lib/xhtml/xhtml-text-1.xsd +62 -0
- data/lib/xhtml/xhtml1-frameset.dtd +1235 -0
- data/lib/xhtml/xhtml1-frameset.xsd +2847 -0
- data/lib/xhtml/xhtml1-strict.dtd +978 -0
- data/lib/xhtml/xhtml1-strict.xsd +2211 -0
- data/lib/xhtml/xhtml1-transitional.dtd +1201 -0
- data/lib/xhtml/xhtml1-transitional.xsd +2755 -0
- data/lib/xhtml/xhtml11-model-1.xsd +715 -0
- data/lib/xhtml/xhtml11-module-redefines-1.xsd +335 -0
- data/lib/xhtml/xhtml11-modules-1.xsd +605 -0
- data/lib/xhtml/xhtml11.xsd +107 -0
- data/lib/xhtml/xhtml2.xsd +21 -0
- data/lib/xhtml/xml-events-1.xsd +73 -0
- data/lib/xhtml/xml-events-2.xsd +73 -0
- data/lib/xhtml/xml-events-attribs-1.xsd +73 -0
- data/lib/xhtml/xml-events-attribs-2.xsd +75 -0
- data/lib/xhtml/xml-events-copyright-1.xsd +34 -0
- data/lib/xhtml/xml-events-copyright-2.xsd +34 -0
- data/lib/xhtml/xml-handlers-1.xsd +136 -0
- data/lib/xhtml/xml-handlers-2.xsd +98 -0
- data/lib/xhtml/xml-script-1.xsd +38 -0
- data/lib/xhtml/xml.xsd +286 -0
- metadata +114 -8
- data/lib/spkspider.rb +0 -147
data/README
CHANGED
|
@@ -2,17 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
== DESCRIPTION
|
|
4
4
|
|
|
5
|
-
Web crawler
|
|
6
|
-
|
|
5
|
+
Web crawler for checking the validity of your documents.
|
|
6
|
+
|
|
7
|
+
== INSTALLATION
|
|
8
|
+
|
|
9
|
+
gem install validate-website --source http://gemcutter.org
|
|
7
10
|
|
|
8
11
|
== SYNOPSIS
|
|
9
12
|
|
|
10
13
|
validate-website --help
|
|
11
|
-
validate-website -s "http://localhost:4567/" -u "Mozilla 5.0"
|
|
14
|
+
validate-website -s "http://localhost:4567/" -u "Mozilla 5.0" \
|
|
15
|
+
-f not-well-formed.txt --auth=user,pass -e 'redirect|news'
|
|
12
16
|
|
|
13
17
|
== REQUIREMENTS:
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
spk-anemone >= 0.2.4 (forked from chriskite/anemone,
|
|
20
|
+
add auth support and html body)
|
|
21
|
+
rainbow >= 1.0.4 (for console color)
|
|
22
|
+
|
|
23
|
+
== CREDITS:
|
|
24
|
+
|
|
25
|
+
Thanks tenderlove for Nokogiri,
|
|
26
|
+
this library is inspired from markup_validity
|
|
16
27
|
|
|
17
28
|
== LICENSE
|
|
18
29
|
(The MIT License)
|
data/Rakefile
CHANGED
|
@@ -7,7 +7,7 @@ require 'find'
|
|
|
7
7
|
# Globals
|
|
8
8
|
|
|
9
9
|
PKG_NAME = 'validate-website'
|
|
10
|
-
PKG_VERSION = '0.
|
|
10
|
+
PKG_VERSION = '0.2'
|
|
11
11
|
|
|
12
12
|
PKG_FILES = ['README', 'Rakefile']
|
|
13
13
|
Find.find('lib/', 'bin/') do |f|
|
|
@@ -54,15 +54,17 @@ spec = Gem::Specification.new do |s|
|
|
|
54
54
|
s.author = 'spk'
|
|
55
55
|
s.email = 'spk@tuxfamily.org'
|
|
56
56
|
s.platform = Gem::Platform::RUBY
|
|
57
|
-
s.summary =
|
|
57
|
+
s.summary = 'Web crawler for checking the validity of your documents'
|
|
58
58
|
s.name = PKG_NAME
|
|
59
59
|
s.version = PKG_VERSION
|
|
60
|
-
s.requirements << '
|
|
60
|
+
s.requirements << 'spk-anemone' << 'rainbow'
|
|
61
|
+
s.add_dependency('spk-anemone', '>= 0.2.4')
|
|
62
|
+
s.add_dependency('rainbow', '>= 1.0.4')
|
|
61
63
|
s.require_path = 'lib'
|
|
62
64
|
s.bindir = 'bin'
|
|
63
65
|
s.executables << 'validate-website'
|
|
64
66
|
s.files = PKG_FILES
|
|
65
|
-
s.description =
|
|
67
|
+
s.description = 'Web crawler for checking the validity of your documents'
|
|
66
68
|
end
|
|
67
69
|
|
|
68
70
|
Rake::GemPackageTask.new(spec) do |pkg|
|
data/bin/validate-website
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
-
$:.unshift '
|
|
3
|
-
|
|
2
|
+
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
3
|
+
|
|
4
|
+
developer_mode = false
|
|
5
|
+
developer_mode = true if __FILE__ == $0
|
|
6
|
+
require 'rubygems' if developer_mode
|
|
7
|
+
|
|
8
|
+
require 'validator'
|
|
9
|
+
require 'anemone'
|
|
4
10
|
require 'colorful_messages'
|
|
5
|
-
require 'open-uri'
|
|
6
|
-
require 'xml'
|
|
7
11
|
require 'optparse'
|
|
8
12
|
|
|
9
13
|
include ColorfulMessages
|
|
10
14
|
|
|
11
|
-
XML.default_validity_checking = true
|
|
12
|
-
XML.default_load_external_dtd = true
|
|
13
|
-
|
|
14
15
|
# default options
|
|
15
16
|
OPTIONS = {
|
|
16
17
|
:site => 'http://localhost:3000/',
|
|
17
|
-
:useragent =>
|
|
18
|
+
:useragent => Anemone::Core::DEFAULT_OPTS[:user_agent],
|
|
18
19
|
:exclude => nil,
|
|
19
20
|
:file => nil,
|
|
20
21
|
:auth => nil,
|
|
@@ -24,54 +25,50 @@ ARGV.options do |o|
|
|
|
24
25
|
script_name = File.basename($0)
|
|
25
26
|
o.set_summary_indent(' ')
|
|
26
27
|
o.banner = "Usage: #{script_name} [OPTIONS]"
|
|
27
|
-
o.define_head "
|
|
28
|
+
o.define_head "#{script_name} - Web crawler for checking the validity of " +
|
|
29
|
+
'your documents'
|
|
28
30
|
o.separator ""
|
|
29
31
|
|
|
30
32
|
o.on("-s", "--site=val", String,
|
|
31
|
-
"Default: #{OPTIONS[:site]}") { |OPTIONS[:site]
|
|
33
|
+
"Default: #{OPTIONS[:site]}") { |v| OPTIONS[:site] = v }
|
|
34
|
+
|
|
32
35
|
o.on("-u", "--useragent=val", String,
|
|
33
|
-
"Default: #{OPTIONS[:useragent]}") { |OPTIONS[:useragent]
|
|
36
|
+
"Default: #{OPTIONS[:useragent]}") { |v| OPTIONS[:useragent] = v }
|
|
34
37
|
o.on("-e", "--exclude=val", String,
|
|
35
|
-
"Url to exclude") { |OPTIONS[:exclude]
|
|
38
|
+
"Url to exclude") { |v| OPTIONS[:exclude] = v }
|
|
36
39
|
o.on("-f", "--file=val", String,
|
|
37
|
-
"save not well formed urls") { |OPTIONS[:file]
|
|
40
|
+
"save not well formed urls") { |v| OPTIONS[:file] = v }
|
|
38
41
|
o.on("--auth=[user,pass]", Array,
|
|
39
|
-
"Basic http authentification") { |OPTIONS[:auth]
|
|
42
|
+
"Basic http authentification") { |v| OPTIONS[:auth] = v }
|
|
40
43
|
|
|
41
44
|
o.separator ""
|
|
42
45
|
o.on_tail("-h", "--help", "Show this help message.") { puts o; exit }
|
|
43
46
|
o.parse!
|
|
44
47
|
end
|
|
45
48
|
|
|
46
|
-
spider = SpkSpider.new(OPTIONS[:site])
|
|
47
|
-
spider.user_agent = OPTIONS[:useragent]
|
|
48
|
-
spider.exclude = Regexp.new(OPTIONS[:exclude]) if OPTIONS[:exclude]
|
|
49
|
-
spider.basic_auth = OPTIONS[:auth]
|
|
50
|
-
|
|
51
49
|
if OPTIONS[:file]
|
|
52
50
|
file = OPTIONS[:file]
|
|
53
51
|
open(file, 'w').write('')
|
|
54
52
|
end
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
exception = error
|
|
62
|
-
end
|
|
54
|
+
Anemone.crawl(OPTIONS[:site],
|
|
55
|
+
:user_agent => OPTIONS[:useragent],
|
|
56
|
+
:authorization => OPTIONS[:auth]) do |anemone|
|
|
57
|
+
|
|
58
|
+
anemone.skip_links_like Regexp.new(OPTIONS[:exclude]) if OPTIONS[:exclude]
|
|
63
59
|
|
|
64
|
-
|
|
60
|
+
anemone.on_every_page { |page|
|
|
61
|
+
next unless page.html?
|
|
62
|
+
url = page.url.to_s
|
|
63
|
+
print info(url)
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
validator = Validator.new(page)
|
|
66
|
+
msg = " well formed? %s" % validator.valid?
|
|
67
|
+
if validator.valid?
|
|
68
|
+
puts success(msg)
|
|
69
69
|
else
|
|
70
|
-
|
|
71
|
-
open(file, 'a').write(url
|
|
70
|
+
puts error(msg)
|
|
71
|
+
open(file, 'a').write("#{url}\n") if OPTIONS[:file]
|
|
72
72
|
end
|
|
73
|
-
|
|
74
|
-
print error(msg)
|
|
75
|
-
open(file, 'a').write(url+"\n") if OPTIONS[:file]
|
|
76
|
-
end
|
|
73
|
+
}
|
|
77
74
|
end
|
data/lib/colorful_messages.rb
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
|
+
require 'rainbow'
|
|
2
|
+
|
|
1
3
|
module ColorfulMessages
|
|
2
4
|
|
|
3
|
-
# red
|
|
4
5
|
def error(message)
|
|
5
|
-
|
|
6
|
+
message.to_s.foreground(:red)
|
|
6
7
|
end
|
|
7
8
|
|
|
8
|
-
# yellow
|
|
9
9
|
def warning(message)
|
|
10
|
-
|
|
10
|
+
message.to_s.foreground(:yellow)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
# green
|
|
14
13
|
def success(message)
|
|
15
|
-
|
|
14
|
+
message.to_s.foreground(:green)
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
alias_method :message, :success
|
|
19
18
|
|
|
20
|
-
# magenta
|
|
21
19
|
def note(message)
|
|
22
|
-
|
|
20
|
+
message.to_s.foreground(:magenta)
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
# blue
|
|
26
23
|
def info(message)
|
|
27
|
-
|
|
24
|
+
message.to_s.foreground(:blue)
|
|
28
25
|
end
|
|
29
26
|
|
|
30
27
|
end
|
data/lib/validator.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
class Validator
|
|
2
|
+
XHTML_PATH = File.join(File.dirname(__FILE__), '..', 'lib', 'xhtml')
|
|
3
|
+
|
|
4
|
+
attr_accessor :page
|
|
5
|
+
attr_accessor :dtd
|
|
6
|
+
attr_accessor :namespace
|
|
7
|
+
attr_accessor :xsd
|
|
8
|
+
attr_accessor :errors
|
|
9
|
+
|
|
10
|
+
def initialize(page)
|
|
11
|
+
@page = page
|
|
12
|
+
if @page.doc.internal_subset.system_id
|
|
13
|
+
@dtd = URI.parse(@page.doc.internal_subset.system_id)
|
|
14
|
+
# http://www.w3.org/TR/xhtml1/#dtds
|
|
15
|
+
@namespace = File.basename(@dtd.path, '.dtd')
|
|
16
|
+
fixed_dtd = @page.body.sub(@dtd.to_s, @namespace + '.dtd')
|
|
17
|
+
doc = Dir.chdir(XHTML_PATH) do
|
|
18
|
+
Nokogiri::XML(fixed_dtd) { |cfg|
|
|
19
|
+
cfg.noent.dtdload.dtdvalid
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
# http://www.w3.org/TR/xhtml1-schema/
|
|
23
|
+
@xsd = Dir.chdir(XHTML_PATH) do
|
|
24
|
+
if File.exists?(@namespace + '.xsd')
|
|
25
|
+
Nokogiri::XML::Schema(File.read(@namespace + '.xsd'))
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
@errors = @xsd ? @xsd.validate(doc) : ["Don't have this xsd"]
|
|
29
|
+
else
|
|
30
|
+
@errors = ['No DTD set !']
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def valid?
|
|
35
|
+
@errors.length == 0
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema
|
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
+
targetNamespace="http://www.w3.org/2002/06/xframes/"
|
|
5
|
+
xmlns="http://www.w3.org/2002/06/xframes/"
|
|
6
|
+
xmlns:xml="http://www.w3.org/XML/1998/namespace"
|
|
7
|
+
elementFormDefault="qualified">
|
|
8
|
+
|
|
9
|
+
<xs:annotation>
|
|
10
|
+
<xs:documentation xml:lang="en">
|
|
11
|
+
This is XFrames - an XML application for composing documents together.
|
|
12
|
+
URI: http://www.w3.org/MarkUp/SCHEMA/xframes-1.xsd
|
|
13
|
+
|
|
14
|
+
Copyright ©2002-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
|
|
15
|
+
|
|
16
|
+
Editor: Masayasu Ishikawa (mimasa@w3.org)
|
|
17
|
+
Revision: $Id: xframes-1.xsd,v 1.9 2005/10/05 23:56:45 mimasa Exp $
|
|
18
|
+
|
|
19
|
+
Permission to use, copy, modify and distribute this XML Schema for
|
|
20
|
+
XFrames and its accompanying documentation for any purpose and without
|
|
21
|
+
fee is hereby granted in perpetuity, provided that the above copyright
|
|
22
|
+
notice and this paragraph appear in all copies. The copyright holders
|
|
23
|
+
make no representation about the suitability of this XML Schema
|
|
24
|
+
for any purpose.
|
|
25
|
+
|
|
26
|
+
It is provided "as is" without expressed or implied warranty.
|
|
27
|
+
</xs:documentation>
|
|
28
|
+
</xs:annotation>
|
|
29
|
+
|
|
30
|
+
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
|
31
|
+
schemaLocation="http://www.w3.org/2001/xml.xsd">
|
|
32
|
+
<xs:annotation>
|
|
33
|
+
<xs:documentation xml:lang="en">
|
|
34
|
+
Get access to the XML namespace
|
|
35
|
+
</xs:documentation>
|
|
36
|
+
</xs:annotation>
|
|
37
|
+
</xs:import>
|
|
38
|
+
|
|
39
|
+
<xs:annotation>
|
|
40
|
+
<xs:documentation xml:lang="en">
|
|
41
|
+
Datatypes
|
|
42
|
+
</xs:documentation>
|
|
43
|
+
</xs:annotation>
|
|
44
|
+
|
|
45
|
+
<xs:simpleType name="ContentType.datatype">
|
|
46
|
+
<xs:annotation>
|
|
47
|
+
<xs:documentation xml:lang="en">
|
|
48
|
+
media type, as per [RFC2045]
|
|
49
|
+
</xs:documentation>
|
|
50
|
+
</xs:annotation>
|
|
51
|
+
<xs:restriction base="xs:string"/>
|
|
52
|
+
</xs:simpleType>
|
|
53
|
+
|
|
54
|
+
<xs:simpleType name="MediaDesc.datatype">
|
|
55
|
+
<xs:annotation>
|
|
56
|
+
<xs:documentation>
|
|
57
|
+
A comma-separated list of media descriptors as described by [CSS2].
|
|
58
|
+
The default is all.
|
|
59
|
+
</xs:documentation>
|
|
60
|
+
</xs:annotation>
|
|
61
|
+
<xs:restriction base="xs:string">
|
|
62
|
+
<xs:pattern value="[^,]+(,\s*[^,]+)*"/>
|
|
63
|
+
</xs:restriction>
|
|
64
|
+
</xs:simpleType>
|
|
65
|
+
|
|
66
|
+
<xs:simpleType name="QName.datatype">
|
|
67
|
+
<xs:annotation>
|
|
68
|
+
<xs:documentation>
|
|
69
|
+
An [XMLNS]-qualified name.
|
|
70
|
+
</xs:documentation>
|
|
71
|
+
</xs:annotation>
|
|
72
|
+
<xs:restriction base="xs:QName"/>
|
|
73
|
+
</xs:simpleType>
|
|
74
|
+
|
|
75
|
+
<xs:simpleType name="URI.datatype">
|
|
76
|
+
<xs:annotation>
|
|
77
|
+
<xs:documentation xml:lang="en">
|
|
78
|
+
An Internationalized Resource Identifier Reference, as defined
|
|
79
|
+
by [IRI].
|
|
80
|
+
</xs:documentation>
|
|
81
|
+
</xs:annotation>
|
|
82
|
+
<xs:restriction base="xs:anyURI"/>
|
|
83
|
+
</xs:simpleType>
|
|
84
|
+
|
|
85
|
+
<xs:attributeGroup name="Common.attrib">
|
|
86
|
+
<xs:annotation>
|
|
87
|
+
<xs:documentation xml:lang="en">
|
|
88
|
+
Common attributes
|
|
89
|
+
</xs:documentation>
|
|
90
|
+
</xs:annotation>
|
|
91
|
+
<xs:attribute name="class" type="xs:NMTOKENS"/>
|
|
92
|
+
<xs:attribute ref="xml:id"/>
|
|
93
|
+
<xs:attribute name="title" type="xs:string"/>
|
|
94
|
+
</xs:attributeGroup>
|
|
95
|
+
|
|
96
|
+
<xs:element name="frames">
|
|
97
|
+
<xs:complexType>
|
|
98
|
+
<xs:sequence>
|
|
99
|
+
<xs:element minOccurs="0" maxOccurs="1" ref="head"/>
|
|
100
|
+
<xs:choice>
|
|
101
|
+
<xs:element ref="group"/>
|
|
102
|
+
<xs:element minOccurs="1" maxOccurs="unbounded" ref="frame"/>
|
|
103
|
+
</xs:choice>
|
|
104
|
+
</xs:sequence>
|
|
105
|
+
<xs:attributeGroup ref="Common.attrib"/>
|
|
106
|
+
<xs:attribute ref="xml:base"/>
|
|
107
|
+
</xs:complexType>
|
|
108
|
+
</xs:element>
|
|
109
|
+
|
|
110
|
+
<xs:element name="head">
|
|
111
|
+
<xs:complexType>
|
|
112
|
+
<xs:sequence>
|
|
113
|
+
<xs:element ref="title"/>
|
|
114
|
+
<xs:element minOccurs="0" maxOccurs="unbounded" ref="style"/>
|
|
115
|
+
</xs:sequence>
|
|
116
|
+
<xs:attributeGroup ref="Common.attrib"/>
|
|
117
|
+
</xs:complexType>
|
|
118
|
+
</xs:element>
|
|
119
|
+
|
|
120
|
+
<xs:element name="title">
|
|
121
|
+
<xs:complexType mixed="true">
|
|
122
|
+
<xs:attributeGroup ref="Common.attrib"/>
|
|
123
|
+
</xs:complexType>
|
|
124
|
+
</xs:element>
|
|
125
|
+
|
|
126
|
+
<xs:element name="style">
|
|
127
|
+
<xs:complexType mixed="true">
|
|
128
|
+
<xs:attributeGroup ref="Common.attrib"/>
|
|
129
|
+
<xs:attribute name="type" type="ContentType.datatype" use="required"/>
|
|
130
|
+
<xs:attribute name="media" type="MediaDesc.datatype"/>
|
|
131
|
+
<xs:attribute name="source" type="URI.datatype"/>
|
|
132
|
+
</xs:complexType>
|
|
133
|
+
</xs:element>
|
|
134
|
+
|
|
135
|
+
<xs:element name="group">
|
|
136
|
+
<xs:complexType>
|
|
137
|
+
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
|
138
|
+
<xs:element ref="group"/>
|
|
139
|
+
<xs:element ref="frame"/>
|
|
140
|
+
</xs:choice>
|
|
141
|
+
<xs:attributeGroup ref="Common.attrib"/>
|
|
142
|
+
<xs:attribute name="compose" default="vertical">
|
|
143
|
+
<xs:simpleType>
|
|
144
|
+
<xs:union memberTypes="QName.datatype">
|
|
145
|
+
<xs:simpleType>
|
|
146
|
+
<xs:restriction base="xs:token">
|
|
147
|
+
<xs:enumeration value="vertical"/>
|
|
148
|
+
<xs:enumeration value="horizontal"/>
|
|
149
|
+
<xs:enumeration value="single"/>
|
|
150
|
+
<xs:enumeration value="free"/>
|
|
151
|
+
</xs:restriction>
|
|
152
|
+
</xs:simpleType>
|
|
153
|
+
</xs:union>
|
|
154
|
+
</xs:simpleType>
|
|
155
|
+
</xs:attribute>
|
|
156
|
+
</xs:complexType>
|
|
157
|
+
</xs:element>
|
|
158
|
+
|
|
159
|
+
<xs:element name="frame">
|
|
160
|
+
<xs:complexType>
|
|
161
|
+
<xs:attributeGroup ref="Common.attrib"/>
|
|
162
|
+
<xs:attribute name="source" type="URI.datatype"/>
|
|
163
|
+
</xs:complexType>
|
|
164
|
+
</xs:element>
|
|
165
|
+
|
|
166
|
+
</xs:schema>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema
|
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
+
elementFormDefault="qualified"
|
|
5
|
+
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
|
|
6
|
+
>
|
|
7
|
+
<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
|
|
8
|
+
schemaLocation="xhtml-datatypes-1.xsd" />
|
|
9
|
+
|
|
10
|
+
<xs:annotation>
|
|
11
|
+
<xs:documentation>
|
|
12
|
+
This is the XML Schema module for XHTML Access
|
|
13
|
+
$Id: xhtml-access-1.xsd,v 1.1 2008/05/17 16:21:57 smccarro Exp $
|
|
14
|
+
</xs:documentation>
|
|
15
|
+
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
|
16
|
+
<xs:documentation source="http://www.w3.org/TR/xhtml-role#A_role"/>
|
|
17
|
+
</xs:annotation>
|
|
18
|
+
<xs:attributeGroup name="xhtml.access.attlist">
|
|
19
|
+
<xs:attributeGroup ref="xhtml.Common.attrib"/>
|
|
20
|
+
<xs:attribute name="activate" default="no">
|
|
21
|
+
<xs:simpleType>
|
|
22
|
+
<xs:restriction base="xs:NMTOKEN">
|
|
23
|
+
<xs:enumeration value="yes"/>
|
|
24
|
+
<xs:enumeration value="no"/>
|
|
25
|
+
</xs:restriction>
|
|
26
|
+
</xs:simpleType>
|
|
27
|
+
</xs:attribute>
|
|
28
|
+
<xs:attribute name="key" type="xh11d:Character"/>
|
|
29
|
+
<xs:attribute name="targetid">
|
|
30
|
+
<xs:simpleType>
|
|
31
|
+
<xs:list itemType="xs:IDREF"/>
|
|
32
|
+
</xs:simpleType>
|
|
33
|
+
</xs:attribute>
|
|
34
|
+
<xs:attribute name="targetrole" type="xh11d:CURIEs"/>
|
|
35
|
+
</xs:attributeGroup>
|
|
36
|
+
<xs:group name="xhtml.access.content">
|
|
37
|
+
<xs:sequence/>
|
|
38
|
+
</xs:group>
|
|
39
|
+
<xs:complexType name="xhtml.access.type">
|
|
40
|
+
<xs:group ref="xhtml.access.content"/>
|
|
41
|
+
<xs:attributeGroup ref="xhtml.access.attlist"/>
|
|
42
|
+
</xs:complexType>
|
|
43
|
+
</xs:schema>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema
|
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
+
elementFormDefault="qualified"
|
|
5
|
+
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
|
|
6
|
+
>
|
|
7
|
+
<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd" />
|
|
8
|
+
|
|
9
|
+
<xs:annotation>
|
|
10
|
+
<xs:documentation>
|
|
11
|
+
Java Applets
|
|
12
|
+
This is the XML Schema module for Java Applets in XHTML
|
|
13
|
+
|
|
14
|
+
* applet (param)
|
|
15
|
+
|
|
16
|
+
This module declares the applet element type and its attributes,
|
|
17
|
+
used to provide support for Java applets. The 'alt' attribute
|
|
18
|
+
is now required (as it is on images). One of either code or
|
|
19
|
+
object attributes must be present. In the document, place param
|
|
20
|
+
elements before the object elements that require their content.
|
|
21
|
+
|
|
22
|
+
Note that use of this module also instantiates of the
|
|
23
|
+
Param Element Module.
|
|
24
|
+
|
|
25
|
+
$Id: xhtml-applet-1.xsd,v 1.3 2005/09/26 22:54:52 ahby Exp $
|
|
26
|
+
</xs:documentation>
|
|
27
|
+
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
|
28
|
+
<xs:documentation
|
|
29
|
+
source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_appletmodule"/>
|
|
30
|
+
</xs:annotation>
|
|
31
|
+
|
|
32
|
+
<xs:include schemaLocation="xhtml-param-1.xsd">
|
|
33
|
+
<xs:annotation>
|
|
34
|
+
<xs:documentation>
|
|
35
|
+
Param module
|
|
36
|
+
Include Param Module
|
|
37
|
+
</xs:documentation>
|
|
38
|
+
</xs:annotation>
|
|
39
|
+
</xs:include>
|
|
40
|
+
|
|
41
|
+
<xs:attributeGroup name="xhtml.applet.attlist">
|
|
42
|
+
<xs:attributeGroup ref="xhtml.Core.attrib"/>
|
|
43
|
+
<xs:attribute name="alt" type="xh11d:Text" use="required"/>
|
|
44
|
+
<xs:attribute name="archive" type="xh11d:CDATA"/>
|
|
45
|
+
<xs:attribute name="code" type="xh11d:CDATA"/>
|
|
46
|
+
<xs:attribute name="codebase" type="xh11d:URI"/>
|
|
47
|
+
<xs:attribute name="object" type="xh11d:CDATA"/>
|
|
48
|
+
<xs:attribute name="width" type="xh11d:Length" use="required"/>
|
|
49
|
+
<xs:attribute name="height" type="xh11d:Length" use="required"/>
|
|
50
|
+
</xs:attributeGroup>
|
|
51
|
+
|
|
52
|
+
<xs:group name="xhtml.applet.content">
|
|
53
|
+
<xs:sequence>
|
|
54
|
+
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
55
|
+
<xs:element ref="param" />
|
|
56
|
+
<xs:group ref="xhtml.Flow.mix"/>
|
|
57
|
+
</xs:choice>
|
|
58
|
+
</xs:sequence>
|
|
59
|
+
</xs:group>
|
|
60
|
+
|
|
61
|
+
<xs:complexType name="xhtml.applet.type" mixed="true">
|
|
62
|
+
<xs:group ref="xhtml.applet.content"/>
|
|
63
|
+
<xs:attributeGroup ref="xhtml.applet.attlist"/>
|
|
64
|
+
</xs:complexType>
|
|
65
|
+
|
|
66
|
+
</xs:schema>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
|
|
3
|
+
<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd"/>
|
|
4
|
+
|
|
5
|
+
<xs:annotation>
|
|
6
|
+
<xs:documentation>
|
|
7
|
+
This is the XML Schema common attributes module for XHTML
|
|
8
|
+
$Id: xhtml-attribs-1.xsd,v 1.7 2008/07/05 04:11:00 ahby Exp $
|
|
9
|
+
</xs:documentation>
|
|
10
|
+
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
|
11
|
+
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
|
|
12
|
+
</xs:annotation>
|
|
13
|
+
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
|
|
14
|
+
<xs:annotation>
|
|
15
|
+
<xs:documentation>
|
|
16
|
+
This import brings in the XML namespace attributes
|
|
17
|
+
The module itself does not provide the schemaLocation
|
|
18
|
+
and expects the driver schema to provide the
|
|
19
|
+
actual SchemaLocation.
|
|
20
|
+
</xs:documentation>
|
|
21
|
+
</xs:annotation>
|
|
22
|
+
</xs:import>
|
|
23
|
+
<xs:attributeGroup name="xhtml.id">
|
|
24
|
+
<xs:attribute name="id" type="xs:ID"/>
|
|
25
|
+
</xs:attributeGroup>
|
|
26
|
+
<xs:attributeGroup name="xhtml.class">
|
|
27
|
+
<xs:attribute name="class" type="xs:NMTOKENS"/>
|
|
28
|
+
</xs:attributeGroup>
|
|
29
|
+
<xs:attributeGroup name="xhtml.title">
|
|
30
|
+
<xs:attribute name="title" type="xs:string"/>
|
|
31
|
+
</xs:attributeGroup>
|
|
32
|
+
<xs:attributeGroup name="xhtml.Core.attrib">
|
|
33
|
+
<xs:attribute ref="xml:space"/>
|
|
34
|
+
<xs:attributeGroup ref="xhtml.id"/>
|
|
35
|
+
<xs:attributeGroup ref="xhtml.class"/>
|
|
36
|
+
<xs:attributeGroup ref="xhtml.title"/>
|
|
37
|
+
<xs:attributeGroup ref="xhtml.Core.extra.attrib"/>
|
|
38
|
+
</xs:attributeGroup>
|
|
39
|
+
<xs:attributeGroup name="xhtml.I18n.attrib">
|
|
40
|
+
<xs:attribute ref="xml:lang"/>
|
|
41
|
+
<xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
|
|
42
|
+
</xs:attributeGroup>
|
|
43
|
+
<xs:attributeGroup name="xhtml.Common.attrib">
|
|
44
|
+
<xs:attributeGroup ref="xhtml.Core.attrib"/>
|
|
45
|
+
<xs:attributeGroup ref="xhtml.I18n.attrib"/>
|
|
46
|
+
<xs:attributeGroup ref="xhtml.Common.extra"/>
|
|
47
|
+
</xs:attributeGroup>
|
|
48
|
+
<!-- Global attributes -->
|
|
49
|
+
<xs:attribute name="id" type="xs:ID"/>
|
|
50
|
+
<xs:attribute name="class" type="xs:NMTOKENS"/>
|
|
51
|
+
<xs:attribute name="title" type="xs:string"/>
|
|
52
|
+
<xs:attributeGroup name="xhtml.Global.core.attrib">
|
|
53
|
+
<xs:attribute ref="id"/>
|
|
54
|
+
<xs:attribute ref="class"/>
|
|
55
|
+
<xs:attribute ref="title"/>
|
|
56
|
+
<xs:attributeGroup ref="xhtml.Global.core.extra.attrib"/>
|
|
57
|
+
</xs:attributeGroup>
|
|
58
|
+
<xs:attributeGroup name="xhtml.Global.i18n.attrib">
|
|
59
|
+
<xs:attribute ref="xml:lang"/>
|
|
60
|
+
<xs:attributeGroup ref="xhtml.Global.I18n.extra.attrib"/>
|
|
61
|
+
</xs:attributeGroup>
|
|
62
|
+
<xs:attributeGroup name="xhtml.Global.common.attrib">
|
|
63
|
+
<xs:attributeGroup ref="xhtml.Global.core.attrib"/>
|
|
64
|
+
<xs:attributeGroup ref="xhtml.Global.i18n.attrib"/>
|
|
65
|
+
<xs:attributeGroup ref="xhtml.Global.Common.extra"/>
|
|
66
|
+
</xs:attributeGroup>
|
|
67
|
+
</xs:schema>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
|
|
3
|
+
<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd"/>
|
|
4
|
+
|
|
5
|
+
<xs:annotation>
|
|
6
|
+
<xs:documentation>
|
|
7
|
+
Base element
|
|
8
|
+
This is the XML Schema Base Element module for XHTML
|
|
9
|
+
|
|
10
|
+
* base
|
|
11
|
+
|
|
12
|
+
This module declares the base element type and its attributes,
|
|
13
|
+
used to define a base URI against which relative URIs in the
|
|
14
|
+
document will be resolved.
|
|
15
|
+
|
|
16
|
+
$Id: xhtml-base-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
|
|
17
|
+
</xs:documentation>
|
|
18
|
+
<xs:documentation source="xhtml-copyright-1.xsd"/>
|
|
19
|
+
<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_basemodule"/>
|
|
20
|
+
</xs:annotation>
|
|
21
|
+
<xs:attributeGroup name="xhtml.base.attlist">
|
|
22
|
+
<xs:attribute name="href" type="xh11d:URI" use="required"/>
|
|
23
|
+
</xs:attributeGroup>
|
|
24
|
+
<xs:group name="xhtml.base.content">
|
|
25
|
+
<xs:sequence/>
|
|
26
|
+
</xs:group>
|
|
27
|
+
<xs:complexType name="xhtml.base.type">
|
|
28
|
+
<xs:group ref="xhtml.base.content"/>
|
|
29
|
+
<xs:attributeGroup ref="xhtml.base.attlist"/>
|
|
30
|
+
</xs:complexType>
|
|
31
|
+
</xs:schema>
|