jakewendt-html_test 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +105 -0
- data/Rakefile +38 -0
- data/VERSION +1 -0
- data/jakewendt-html_test.gemspec +68 -0
- data/lib/DTD/xhtml-lat1.ent +196 -0
- data/lib/DTD/xhtml-special.ent +80 -0
- data/lib/DTD/xhtml-symbol.ent +237 -0
- data/lib/DTD/xhtml.soc +14 -0
- data/lib/DTD/xhtml1-frameset.dtd +1235 -0
- data/lib/DTD/xhtml1-strict.dtd +978 -0
- data/lib/DTD/xhtml1-transitional.dtd +1201 -0
- data/lib/DTD/xhtml1.dcl +192 -0
- data/lib/assertions.rb +53 -0
- data/lib/html_test.rb +96 -0
- data/lib/jakewendt-html_test.rb +1 -0
- data/lib/link_validator.rb +175 -0
- data/lib/url_checker.rb +142 -0
- data/lib/url_selector.rb +57 -0
- data/lib/validate_filter.rb +55 -0
- data/lib/validator.rb +121 -0
- data/rails/init.rb +1 -0
- data/script/validate +47 -0
- data/test/controller_test.rb +120 -0
- data/test/integration_test.rb +73 -0
- data/test/invalid.html +15 -0
- data/test/link_validator_test.rb +141 -0
- data/test/public/image.jpg +0 -0
- data/test/rhtml_template.rhtml +1 -0
- data/test/rxml_template.rxml +2 -0
- data/test/test_helper.rb +61 -0
- data/test/untidy.html +19 -0
- data/test/valid.html +14 -0
- data/test/valid_links.html +22 -0
- data/test/validate_all_test.rb +16 -0
- metadata +101 -0
data/README.rdoc
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
= Html Test
|
2
|
+
A plugin for HTML validation and link checking in Rails
|
3
|
+
functional and integration tests. In addition you can run
|
4
|
+
the HTML and link tests against a production or staging server over HTTP.
|
5
|
+
|
6
|
+
== Installation
|
7
|
+
ruby script/plugin install git://github.com/peter/html_test.git
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
- Add validation to your controller or integration tests:
|
11
|
+
|
12
|
+
get :some_action
|
13
|
+
assert_response :success
|
14
|
+
# The following validates using all three validators: tidy, w3c, xmllint
|
15
|
+
# To use a specific validator, use one of assert_tidy, assert_w3c, and
|
16
|
+
# assert_xmllint.
|
17
|
+
assert_validates
|
18
|
+
|
19
|
+
- Validate all requests in your controller and integration tests by
|
20
|
+
adding these lines to your RAILS_ROOT/test/test_helper.rb file:
|
21
|
+
|
22
|
+
ApplicationController.validate_all = true
|
23
|
+
ApplicationController.validators = [:tidy, :w3c]
|
24
|
+
|
25
|
+
- Check for broken URLs (URLs that don't resolve to a route, a controller, and an action)
|
26
|
+
in your links, images, forms, and redirects. Works both in your controller and integration
|
27
|
+
tests. Add these lines to your RAILS_ROOT/test/test_helper.rb file:
|
28
|
+
|
29
|
+
ApplicationController.check_urls = true
|
30
|
+
ApplicationController.check_redirects = true
|
31
|
+
|
32
|
+
- Follow links in your controller or integration tests:
|
33
|
+
|
34
|
+
include Html::Test::UrlSelector
|
35
|
+
|
36
|
+
def clicks_around
|
37
|
+
page_url = request.request_uri
|
38
|
+
anchor_urls.reject { |url| external_http?(url) || skip_url?(url) || url == page_url }.
|
39
|
+
reject { |url| url =~ /(logout|signout)/ }.uniq.each do |url|
|
40
|
+
|
41
|
+
get url
|
42
|
+
assert(@response.redirect? || @response.success?,
|
43
|
+
"Invalid response code #{@response.response_code} for url #{url}")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
- Use the link validator to validate your staging or production server over HTTP:
|
48
|
+
|
49
|
+
./vendor/plugins/html_test/script/validate http://my.blog.com --validators tidy,xmllint
|
50
|
+
|
51
|
+
- Configuration options for your tests
|
52
|
+
|
53
|
+
Here is a list of configuration options to use in test/test_helper.rb:
|
54
|
+
|
55
|
+
# # Validates all controller and integration test requests if set to true:
|
56
|
+
# ApplicationController.validate_all = true # Default: false.
|
57
|
+
# ApplicationController.validators = [:tidy, :w3c, :xmllint] # Default: [:tidy]. Which validators to use.
|
58
|
+
# # A list of regular expressions for Tidy warnings to ignore:
|
59
|
+
# Html::Test::Validator.tidy_ignore_list = [/<table> lacks "summary" attribute/] # Default: [].
|
60
|
+
# # Set the URL of a locally installed W3C validator here:
|
61
|
+
# Html::Test::Validator.w3c_url = "http://localhost/validator/htdocs/check" # Default: "http://validator.w3.org/check"
|
62
|
+
# Html::Test::Validator.w3c_show_source = "0" # Default: "1". Whether to list HTML document in the W3C report
|
63
|
+
# ApplicationController.check_urls = true # Default: false. Whether to check URLs in all links
|
64
|
+
# ApplicationController.check_redirects = true # Default: false. Whether to check URLs in all redirects
|
65
|
+
|
66
|
+
== Validators and Dependencies
|
67
|
+
To use Tidy for HTML validation you need the rails_tidy plugin.
|
68
|
+
The xmllint validation option requires xmllint to
|
69
|
+
be available on the command line. The xmllint validator is part of
|
70
|
+
libxml2. The W3C validator has no dependencies since we access it via
|
71
|
+
the web. To install the W3C validator locally (highly recommended), see
|
72
|
+
those instructions:
|
73
|
+
|
74
|
+
http://validator.w3.org/docs/install.html
|
75
|
+
|
76
|
+
On Mac OSX I currently use the following easy to install W3C validator:
|
77
|
+
|
78
|
+
http://habilis.net/validator-sac
|
79
|
+
|
80
|
+
I recommend using both the tidy and W3C validators (or xmllint if for some reason you can't use
|
81
|
+
the W3C validator). Tidy gives useful warnings for example about empty tags,
|
82
|
+
but it misses obvious validation failures such as lack of HTML
|
83
|
+
quoting or unclosed tags. The W3C validator offers much better reports for debugging than
|
84
|
+
xmllint. The W3C HTML reports are written to disk so you can bring it up in your browser for debugging.
|
85
|
+
|
86
|
+
The xmllint validator will use the XHTML 1.0 strict DTD by default. To specify a different DTD,
|
87
|
+
have the Html::Test::Validator.dtd(document) method return the path to your DTD file. If you
|
88
|
+
prefer to use the DTD referenced in the DOCTYPE declaration (can be very slow) then have the dtd
|
89
|
+
method return the string "doctype".
|
90
|
+
|
91
|
+
If you are using a catch-all route for 404:s, then you need to implement the method
|
92
|
+
Html::Test::UrlChecker#check_not_404(url, params) and throw an exception if that route is invoked.
|
93
|
+
|
94
|
+
There are methods such as skip_url?(url) and should_validate? that you can override to control
|
95
|
+
which pages get validated and which URLs get checked.
|
96
|
+
|
97
|
+
== Tests
|
98
|
+
If you make changes to this plugin, remember to run the tests with rake. The tests
|
99
|
+
require the rails_tidy and mocha plugins as well as xmllint.
|
100
|
+
|
101
|
+
== Author
|
102
|
+
Peter Marklund (http://marklunds.com)
|
103
|
+
|
104
|
+
== License
|
105
|
+
Licensed under the same terms as Ruby on Rails.
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the html_test plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for the html_test plugin.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'HtmlTest'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
23
|
+
|
24
|
+
begin
|
25
|
+
require 'jeweler'
|
26
|
+
Jeweler::Tasks.new do |gem|
|
27
|
+
gem.name = "jakewendt-html_test"
|
28
|
+
gem.summary = %Q{Ruby on Rails plugin for HTML validation and link checking}
|
29
|
+
gem.description = %Q{Ruby on Rails plugin for HTML validation and link checking}
|
30
|
+
gem.email = "github@jake.otherinbox.com"
|
31
|
+
gem.homepage = "http://github.com/jakewendt/html_test"
|
32
|
+
gem.authors = ["Peter Marklund", "George 'Jake' Wendt"]
|
33
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
34
|
+
end
|
35
|
+
Jeweler::GemcutterTasks.new
|
36
|
+
rescue LoadError
|
37
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
38
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.3
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{jakewendt-html_test}
|
8
|
+
s.version = "0.2.3"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Peter Marklund", "George 'Jake' Wendt"]
|
12
|
+
s.date = %q{2011-08-10}
|
13
|
+
s.description = %q{Ruby on Rails plugin for HTML validation and link checking}
|
14
|
+
s.email = %q{github@jake.otherinbox.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.rdoc"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"README.rdoc",
|
20
|
+
"Rakefile",
|
21
|
+
"VERSION",
|
22
|
+
"jakewendt-html_test.gemspec",
|
23
|
+
"lib/DTD/xhtml-lat1.ent",
|
24
|
+
"lib/DTD/xhtml-special.ent",
|
25
|
+
"lib/DTD/xhtml-symbol.ent",
|
26
|
+
"lib/DTD/xhtml.soc",
|
27
|
+
"lib/DTD/xhtml1-frameset.dtd",
|
28
|
+
"lib/DTD/xhtml1-strict.dtd",
|
29
|
+
"lib/DTD/xhtml1-transitional.dtd",
|
30
|
+
"lib/DTD/xhtml1.dcl",
|
31
|
+
"lib/assertions.rb",
|
32
|
+
"lib/html_test.rb",
|
33
|
+
"lib/jakewendt-html_test.rb",
|
34
|
+
"lib/link_validator.rb",
|
35
|
+
"lib/url_checker.rb",
|
36
|
+
"lib/url_selector.rb",
|
37
|
+
"lib/validate_filter.rb",
|
38
|
+
"lib/validator.rb",
|
39
|
+
"rails/init.rb",
|
40
|
+
"script/validate",
|
41
|
+
"test/controller_test.rb",
|
42
|
+
"test/integration_test.rb",
|
43
|
+
"test/invalid.html",
|
44
|
+
"test/link_validator_test.rb",
|
45
|
+
"test/public/image.jpg",
|
46
|
+
"test/rhtml_template.rhtml",
|
47
|
+
"test/rxml_template.rxml",
|
48
|
+
"test/test_helper.rb",
|
49
|
+
"test/untidy.html",
|
50
|
+
"test/valid.html",
|
51
|
+
"test/valid_links.html",
|
52
|
+
"test/validate_all_test.rb"
|
53
|
+
]
|
54
|
+
s.homepage = %q{http://github.com/jakewendt/html_test}
|
55
|
+
s.require_paths = ["lib"]
|
56
|
+
s.rubygems_version = %q{1.6.2}
|
57
|
+
s.summary = %q{Ruby on Rails plugin for HTML validation and link checking}
|
58
|
+
|
59
|
+
if s.respond_to? :specification_version then
|
60
|
+
s.specification_version = 3
|
61
|
+
|
62
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
63
|
+
else
|
64
|
+
end
|
65
|
+
else
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,196 @@
|
|
1
|
+
<!-- Portions (C) International Organization for Standardization 1986
|
2
|
+
Permission to copy in any form is granted for use with
|
3
|
+
conforming SGML systems and applications as defined in
|
4
|
+
ISO 8879, provided this notice is included in all copies.
|
5
|
+
-->
|
6
|
+
<!-- Character entity set. Typical invocation:
|
7
|
+
<!ENTITY % HTMLlat1 PUBLIC
|
8
|
+
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
|
9
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
|
10
|
+
%HTMLlat1;
|
11
|
+
-->
|
12
|
+
|
13
|
+
<!ENTITY nbsp " "> <!-- no-break space = non-breaking space,
|
14
|
+
U+00A0 ISOnum -->
|
15
|
+
<!ENTITY iexcl "¡"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
|
16
|
+
<!ENTITY cent "¢"> <!-- cent sign, U+00A2 ISOnum -->
|
17
|
+
<!ENTITY pound "£"> <!-- pound sign, U+00A3 ISOnum -->
|
18
|
+
<!ENTITY curren "¤"> <!-- currency sign, U+00A4 ISOnum -->
|
19
|
+
<!ENTITY yen "¥"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
|
20
|
+
<!ENTITY brvbar "¦"> <!-- broken bar = broken vertical bar,
|
21
|
+
U+00A6 ISOnum -->
|
22
|
+
<!ENTITY sect "§"> <!-- section sign, U+00A7 ISOnum -->
|
23
|
+
<!ENTITY uml "¨"> <!-- diaeresis = spacing diaeresis,
|
24
|
+
U+00A8 ISOdia -->
|
25
|
+
<!ENTITY copy "©"> <!-- copyright sign, U+00A9 ISOnum -->
|
26
|
+
<!ENTITY ordf "ª"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
|
27
|
+
<!ENTITY laquo "«"> <!-- left-pointing double angle quotation mark
|
28
|
+
= left pointing guillemet, U+00AB ISOnum -->
|
29
|
+
<!ENTITY not "¬"> <!-- not sign = angled dash,
|
30
|
+
U+00AC ISOnum -->
|
31
|
+
<!ENTITY shy "­"> <!-- soft hyphen = discretionary hyphen,
|
32
|
+
U+00AD ISOnum -->
|
33
|
+
<!ENTITY reg "®"> <!-- registered sign = registered trade mark sign,
|
34
|
+
U+00AE ISOnum -->
|
35
|
+
<!ENTITY macr "¯"> <!-- macron = spacing macron = overline
|
36
|
+
= APL overbar, U+00AF ISOdia -->
|
37
|
+
<!ENTITY deg "°"> <!-- degree sign, U+00B0 ISOnum -->
|
38
|
+
<!ENTITY plusmn "±"> <!-- plus-minus sign = plus-or-minus sign,
|
39
|
+
U+00B1 ISOnum -->
|
40
|
+
<!ENTITY sup2 "²"> <!-- superscript two = superscript digit two
|
41
|
+
= squared, U+00B2 ISOnum -->
|
42
|
+
<!ENTITY sup3 "³"> <!-- superscript three = superscript digit three
|
43
|
+
= cubed, U+00B3 ISOnum -->
|
44
|
+
<!ENTITY acute "´"> <!-- acute accent = spacing acute,
|
45
|
+
U+00B4 ISOdia -->
|
46
|
+
<!ENTITY micro "µ"> <!-- micro sign, U+00B5 ISOnum -->
|
47
|
+
<!ENTITY para "¶"> <!-- pilcrow sign = paragraph sign,
|
48
|
+
U+00B6 ISOnum -->
|
49
|
+
<!ENTITY middot "·"> <!-- middle dot = Georgian comma
|
50
|
+
= Greek middle dot, U+00B7 ISOnum -->
|
51
|
+
<!ENTITY cedil "¸"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
|
52
|
+
<!ENTITY sup1 "¹"> <!-- superscript one = superscript digit one,
|
53
|
+
U+00B9 ISOnum -->
|
54
|
+
<!ENTITY ordm "º"> <!-- masculine ordinal indicator,
|
55
|
+
U+00BA ISOnum -->
|
56
|
+
<!ENTITY raquo "»"> <!-- right-pointing double angle quotation mark
|
57
|
+
= right pointing guillemet, U+00BB ISOnum -->
|
58
|
+
<!ENTITY frac14 "¼"> <!-- vulgar fraction one quarter
|
59
|
+
= fraction one quarter, U+00BC ISOnum -->
|
60
|
+
<!ENTITY frac12 "½"> <!-- vulgar fraction one half
|
61
|
+
= fraction one half, U+00BD ISOnum -->
|
62
|
+
<!ENTITY frac34 "¾"> <!-- vulgar fraction three quarters
|
63
|
+
= fraction three quarters, U+00BE ISOnum -->
|
64
|
+
<!ENTITY iquest "¿"> <!-- inverted question mark
|
65
|
+
= turned question mark, U+00BF ISOnum -->
|
66
|
+
<!ENTITY Agrave "À"> <!-- latin capital letter A with grave
|
67
|
+
= latin capital letter A grave,
|
68
|
+
U+00C0 ISOlat1 -->
|
69
|
+
<!ENTITY Aacute "Á"> <!-- latin capital letter A with acute,
|
70
|
+
U+00C1 ISOlat1 -->
|
71
|
+
<!ENTITY Acirc "Â"> <!-- latin capital letter A with circumflex,
|
72
|
+
U+00C2 ISOlat1 -->
|
73
|
+
<!ENTITY Atilde "Ã"> <!-- latin capital letter A with tilde,
|
74
|
+
U+00C3 ISOlat1 -->
|
75
|
+
<!ENTITY Auml "Ä"> <!-- latin capital letter A with diaeresis,
|
76
|
+
U+00C4 ISOlat1 -->
|
77
|
+
<!ENTITY Aring "Å"> <!-- latin capital letter A with ring above
|
78
|
+
= latin capital letter A ring,
|
79
|
+
U+00C5 ISOlat1 -->
|
80
|
+
<!ENTITY AElig "Æ"> <!-- latin capital letter AE
|
81
|
+
= latin capital ligature AE,
|
82
|
+
U+00C6 ISOlat1 -->
|
83
|
+
<!ENTITY Ccedil "Ç"> <!-- latin capital letter C with cedilla,
|
84
|
+
U+00C7 ISOlat1 -->
|
85
|
+
<!ENTITY Egrave "È"> <!-- latin capital letter E with grave,
|
86
|
+
U+00C8 ISOlat1 -->
|
87
|
+
<!ENTITY Eacute "É"> <!-- latin capital letter E with acute,
|
88
|
+
U+00C9 ISOlat1 -->
|
89
|
+
<!ENTITY Ecirc "Ê"> <!-- latin capital letter E with circumflex,
|
90
|
+
U+00CA ISOlat1 -->
|
91
|
+
<!ENTITY Euml "Ë"> <!-- latin capital letter E with diaeresis,
|
92
|
+
U+00CB ISOlat1 -->
|
93
|
+
<!ENTITY Igrave "Ì"> <!-- latin capital letter I with grave,
|
94
|
+
U+00CC ISOlat1 -->
|
95
|
+
<!ENTITY Iacute "Í"> <!-- latin capital letter I with acute,
|
96
|
+
U+00CD ISOlat1 -->
|
97
|
+
<!ENTITY Icirc "Î"> <!-- latin capital letter I with circumflex,
|
98
|
+
U+00CE ISOlat1 -->
|
99
|
+
<!ENTITY Iuml "Ï"> <!-- latin capital letter I with diaeresis,
|
100
|
+
U+00CF ISOlat1 -->
|
101
|
+
<!ENTITY ETH "Ð"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
|
102
|
+
<!ENTITY Ntilde "Ñ"> <!-- latin capital letter N with tilde,
|
103
|
+
U+00D1 ISOlat1 -->
|
104
|
+
<!ENTITY Ograve "Ò"> <!-- latin capital letter O with grave,
|
105
|
+
U+00D2 ISOlat1 -->
|
106
|
+
<!ENTITY Oacute "Ó"> <!-- latin capital letter O with acute,
|
107
|
+
U+00D3 ISOlat1 -->
|
108
|
+
<!ENTITY Ocirc "Ô"> <!-- latin capital letter O with circumflex,
|
109
|
+
U+00D4 ISOlat1 -->
|
110
|
+
<!ENTITY Otilde "Õ"> <!-- latin capital letter O with tilde,
|
111
|
+
U+00D5 ISOlat1 -->
|
112
|
+
<!ENTITY Ouml "Ö"> <!-- latin capital letter O with diaeresis,
|
113
|
+
U+00D6 ISOlat1 -->
|
114
|
+
<!ENTITY times "×"> <!-- multiplication sign, U+00D7 ISOnum -->
|
115
|
+
<!ENTITY Oslash "Ø"> <!-- latin capital letter O with stroke
|
116
|
+
= latin capital letter O slash,
|
117
|
+
U+00D8 ISOlat1 -->
|
118
|
+
<!ENTITY Ugrave "Ù"> <!-- latin capital letter U with grave,
|
119
|
+
U+00D9 ISOlat1 -->
|
120
|
+
<!ENTITY Uacute "Ú"> <!-- latin capital letter U with acute,
|
121
|
+
U+00DA ISOlat1 -->
|
122
|
+
<!ENTITY Ucirc "Û"> <!-- latin capital letter U with circumflex,
|
123
|
+
U+00DB ISOlat1 -->
|
124
|
+
<!ENTITY Uuml "Ü"> <!-- latin capital letter U with diaeresis,
|
125
|
+
U+00DC ISOlat1 -->
|
126
|
+
<!ENTITY Yacute "Ý"> <!-- latin capital letter Y with acute,
|
127
|
+
U+00DD ISOlat1 -->
|
128
|
+
<!ENTITY THORN "Þ"> <!-- latin capital letter THORN,
|
129
|
+
U+00DE ISOlat1 -->
|
130
|
+
<!ENTITY szlig "ß"> <!-- latin small letter sharp s = ess-zed,
|
131
|
+
U+00DF ISOlat1 -->
|
132
|
+
<!ENTITY agrave "à"> <!-- latin small letter a with grave
|
133
|
+
= latin small letter a grave,
|
134
|
+
U+00E0 ISOlat1 -->
|
135
|
+
<!ENTITY aacute "á"> <!-- latin small letter a with acute,
|
136
|
+
U+00E1 ISOlat1 -->
|
137
|
+
<!ENTITY acirc "â"> <!-- latin small letter a with circumflex,
|
138
|
+
U+00E2 ISOlat1 -->
|
139
|
+
<!ENTITY atilde "ã"> <!-- latin small letter a with tilde,
|
140
|
+
U+00E3 ISOlat1 -->
|
141
|
+
<!ENTITY auml "ä"> <!-- latin small letter a with diaeresis,
|
142
|
+
U+00E4 ISOlat1 -->
|
143
|
+
<!ENTITY aring "å"> <!-- latin small letter a with ring above
|
144
|
+
= latin small letter a ring,
|
145
|
+
U+00E5 ISOlat1 -->
|
146
|
+
<!ENTITY aelig "æ"> <!-- latin small letter ae
|
147
|
+
= latin small ligature ae, U+00E6 ISOlat1 -->
|
148
|
+
<!ENTITY ccedil "ç"> <!-- latin small letter c with cedilla,
|
149
|
+
U+00E7 ISOlat1 -->
|
150
|
+
<!ENTITY egrave "è"> <!-- latin small letter e with grave,
|
151
|
+
U+00E8 ISOlat1 -->
|
152
|
+
<!ENTITY eacute "é"> <!-- latin small letter e with acute,
|
153
|
+
U+00E9 ISOlat1 -->
|
154
|
+
<!ENTITY ecirc "ê"> <!-- latin small letter e with circumflex,
|
155
|
+
U+00EA ISOlat1 -->
|
156
|
+
<!ENTITY euml "ë"> <!-- latin small letter e with diaeresis,
|
157
|
+
U+00EB ISOlat1 -->
|
158
|
+
<!ENTITY igrave "ì"> <!-- latin small letter i with grave,
|
159
|
+
U+00EC ISOlat1 -->
|
160
|
+
<!ENTITY iacute "í"> <!-- latin small letter i with acute,
|
161
|
+
U+00ED ISOlat1 -->
|
162
|
+
<!ENTITY icirc "î"> <!-- latin small letter i with circumflex,
|
163
|
+
U+00EE ISOlat1 -->
|
164
|
+
<!ENTITY iuml "ï"> <!-- latin small letter i with diaeresis,
|
165
|
+
U+00EF ISOlat1 -->
|
166
|
+
<!ENTITY eth "ð"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
|
167
|
+
<!ENTITY ntilde "ñ"> <!-- latin small letter n with tilde,
|
168
|
+
U+00F1 ISOlat1 -->
|
169
|
+
<!ENTITY ograve "ò"> <!-- latin small letter o with grave,
|
170
|
+
U+00F2 ISOlat1 -->
|
171
|
+
<!ENTITY oacute "ó"> <!-- latin small letter o with acute,
|
172
|
+
U+00F3 ISOlat1 -->
|
173
|
+
<!ENTITY ocirc "ô"> <!-- latin small letter o with circumflex,
|
174
|
+
U+00F4 ISOlat1 -->
|
175
|
+
<!ENTITY otilde "õ"> <!-- latin small letter o with tilde,
|
176
|
+
U+00F5 ISOlat1 -->
|
177
|
+
<!ENTITY ouml "ö"> <!-- latin small letter o with diaeresis,
|
178
|
+
U+00F6 ISOlat1 -->
|
179
|
+
<!ENTITY divide "÷"> <!-- division sign, U+00F7 ISOnum -->
|
180
|
+
<!ENTITY oslash "ø"> <!-- latin small letter o with stroke,
|
181
|
+
= latin small letter o slash,
|
182
|
+
U+00F8 ISOlat1 -->
|
183
|
+
<!ENTITY ugrave "ù"> <!-- latin small letter u with grave,
|
184
|
+
U+00F9 ISOlat1 -->
|
185
|
+
<!ENTITY uacute "ú"> <!-- latin small letter u with acute,
|
186
|
+
U+00FA ISOlat1 -->
|
187
|
+
<!ENTITY ucirc "û"> <!-- latin small letter u with circumflex,
|
188
|
+
U+00FB ISOlat1 -->
|
189
|
+
<!ENTITY uuml "ü"> <!-- latin small letter u with diaeresis,
|
190
|
+
U+00FC ISOlat1 -->
|
191
|
+
<!ENTITY yacute "ý"> <!-- latin small letter y with acute,
|
192
|
+
U+00FD ISOlat1 -->
|
193
|
+
<!ENTITY thorn "þ"> <!-- latin small letter thorn,
|
194
|
+
U+00FE ISOlat1 -->
|
195
|
+
<!ENTITY yuml "ÿ"> <!-- latin small letter y with diaeresis,
|
196
|
+
U+00FF ISOlat1 -->
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<!-- Special characters for XHTML -->
|
2
|
+
|
3
|
+
<!-- Character entity set. Typical invocation:
|
4
|
+
<!ENTITY % HTMLspecial PUBLIC
|
5
|
+
"-//W3C//ENTITIES Special for XHTML//EN"
|
6
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
|
7
|
+
%HTMLspecial;
|
8
|
+
-->
|
9
|
+
|
10
|
+
<!-- Portions (C) International Organization for Standardization 1986:
|
11
|
+
Permission to copy in any form is granted for use with
|
12
|
+
conforming SGML systems and applications as defined in
|
13
|
+
ISO 8879, provided this notice is included in all copies.
|
14
|
+
-->
|
15
|
+
|
16
|
+
<!-- Relevant ISO entity set is given unless names are newly introduced.
|
17
|
+
New names (i.e., not in ISO 8879 list) do not clash with any
|
18
|
+
existing ISO 8879 entity names. ISO 10646 character numbers
|
19
|
+
are given for each character, in hex. values are decimal
|
20
|
+
conversions of the ISO 10646 values and refer to the document
|
21
|
+
character set. Names are Unicode names.
|
22
|
+
-->
|
23
|
+
|
24
|
+
<!-- C0 Controls and Basic Latin -->
|
25
|
+
<!ENTITY quot """> <!-- quotation mark, U+0022 ISOnum -->
|
26
|
+
<!ENTITY amp "&#38;"> <!-- ampersand, U+0026 ISOnum -->
|
27
|
+
<!ENTITY lt "&#60;"> <!-- less-than sign, U+003C ISOnum -->
|
28
|
+
<!ENTITY gt ">"> <!-- greater-than sign, U+003E ISOnum -->
|
29
|
+
<!ENTITY apos "'"> <!-- apostrophe = APL quote, U+0027 ISOnum -->
|
30
|
+
|
31
|
+
<!-- Latin Extended-A -->
|
32
|
+
<!ENTITY OElig "Œ"> <!-- latin capital ligature OE,
|
33
|
+
U+0152 ISOlat2 -->
|
34
|
+
<!ENTITY oelig "œ"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
|
35
|
+
<!-- ligature is a misnomer, this is a separate character in some languages -->
|
36
|
+
<!ENTITY Scaron "Š"> <!-- latin capital letter S with caron,
|
37
|
+
U+0160 ISOlat2 -->
|
38
|
+
<!ENTITY scaron "š"> <!-- latin small letter s with caron,
|
39
|
+
U+0161 ISOlat2 -->
|
40
|
+
<!ENTITY Yuml "Ÿ"> <!-- latin capital letter Y with diaeresis,
|
41
|
+
U+0178 ISOlat2 -->
|
42
|
+
|
43
|
+
<!-- Spacing Modifier Letters -->
|
44
|
+
<!ENTITY circ "ˆ"> <!-- modifier letter circumflex accent,
|
45
|
+
U+02C6 ISOpub -->
|
46
|
+
<!ENTITY tilde "˜"> <!-- small tilde, U+02DC ISOdia -->
|
47
|
+
|
48
|
+
<!-- General Punctuation -->
|
49
|
+
<!ENTITY ensp " "> <!-- en space, U+2002 ISOpub -->
|
50
|
+
<!ENTITY emsp " "> <!-- em space, U+2003 ISOpub -->
|
51
|
+
<!ENTITY thinsp " "> <!-- thin space, U+2009 ISOpub -->
|
52
|
+
<!ENTITY zwnj "‌"> <!-- zero width non-joiner,
|
53
|
+
U+200C NEW RFC 2070 -->
|
54
|
+
<!ENTITY zwj "‍"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
|
55
|
+
<!ENTITY lrm "‎"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
|
56
|
+
<!ENTITY rlm "‏"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
|
57
|
+
<!ENTITY ndash "–"> <!-- en dash, U+2013 ISOpub -->
|
58
|
+
<!ENTITY mdash "—"> <!-- em dash, U+2014 ISOpub -->
|
59
|
+
<!ENTITY lsquo "‘"> <!-- left single quotation mark,
|
60
|
+
U+2018 ISOnum -->
|
61
|
+
<!ENTITY rsquo "’"> <!-- right single quotation mark,
|
62
|
+
U+2019 ISOnum -->
|
63
|
+
<!ENTITY sbquo "‚"> <!-- single low-9 quotation mark, U+201A NEW -->
|
64
|
+
<!ENTITY ldquo "“"> <!-- left double quotation mark,
|
65
|
+
U+201C ISOnum -->
|
66
|
+
<!ENTITY rdquo "”"> <!-- right double quotation mark,
|
67
|
+
U+201D ISOnum -->
|
68
|
+
<!ENTITY bdquo "„"> <!-- double low-9 quotation mark, U+201E NEW -->
|
69
|
+
<!ENTITY dagger "†"> <!-- dagger, U+2020 ISOpub -->
|
70
|
+
<!ENTITY Dagger "‡"> <!-- double dagger, U+2021 ISOpub -->
|
71
|
+
<!ENTITY permil "‰"> <!-- per mille sign, U+2030 ISOtech -->
|
72
|
+
<!ENTITY lsaquo "‹"> <!-- single left-pointing angle quotation mark,
|
73
|
+
U+2039 ISO proposed -->
|
74
|
+
<!-- lsaquo is proposed but not yet ISO standardized -->
|
75
|
+
<!ENTITY rsaquo "›"> <!-- single right-pointing angle quotation mark,
|
76
|
+
U+203A ISO proposed -->
|
77
|
+
<!-- rsaquo is proposed but not yet ISO standardized -->
|
78
|
+
|
79
|
+
<!-- Currency Symbols -->
|
80
|
+
<!ENTITY euro "€"> <!-- euro sign, U+20AC NEW -->
|