ccls-html_test 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +142 -0
- data/Rakefile +59 -0
- data/VERSION +1 -0
- data/ccls-html_test.gemspec +57 -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 +57 -0
- data/lib/ccls-html_test.rb +1 -0
- data/lib/html_test.rb +98 -0
- data/lib/link_validator.rb +175 -0
- data/lib/url_checker.rb +147 -0
- data/lib/url_selector.rb +57 -0
- data/lib/validate_filter.rb +62 -0
- data/lib/validator.rb +127 -0
- data/rails/init.rb +1 -0
- data/script/rails +6 -0
- data/script/validate +47 -0
- metadata +69 -0
data/README.rdoc
ADDED
@@ -0,0 +1,142 @@
|
|
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.
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
== Gemified with Jeweler
|
113
|
+
|
114
|
+
vi Rakefile
|
115
|
+
rake version:write
|
116
|
+
|
117
|
+
rake version:bump:patch
|
118
|
+
rake version:bump:minor
|
119
|
+
rake version:bump:major
|
120
|
+
|
121
|
+
rake gemspec
|
122
|
+
|
123
|
+
rake install
|
124
|
+
rake release
|
125
|
+
|
126
|
+
== Testing
|
127
|
+
|
128
|
+
Since upgrading some apps to rails 3, I found that this gem has some issues.
|
129
|
+
So, I'm wrapping the repo code in a rails 3 app solely for testing.
|
130
|
+
During gem creation/installation only the necessary code will be included.
|
131
|
+
|
132
|
+
Features untested in rails 3 due to me not using them ...
|
133
|
+
|
134
|
+
* the tidy validator
|
135
|
+
* the check_urls option
|
136
|
+
* ActionController::Routing::Routes doesn't exist in Rails 3
|
137
|
+
* also note, Test::Unit::AssertionFailedError doesn't exist in Ruby 1.9
|
138
|
+
* replaced all with "MiniTest::Assertion"
|
139
|
+
* these assert_raises are wrapped around assertion that don't have a negative
|
140
|
+
* also, the gem now adds the Gemfile dependencies to it which isn't really true
|
141
|
+
|
142
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
|
+
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
6
|
+
|
7
|
+
HtmlTest::Application.load_tasks
|
8
|
+
|
9
|
+
require 'rake'
|
10
|
+
require 'rake/testtask'
|
11
|
+
#require 'rake/rdoctask'
|
12
|
+
require 'rdoc/task'
|
13
|
+
|
14
|
+
desc 'Default: run unit tests.'
|
15
|
+
task :default => :test
|
16
|
+
|
17
|
+
desc 'Test the html_test plugin.'
|
18
|
+
Rake::TestTask.new(:test) do |t|
|
19
|
+
t.libs << 'test'
|
20
|
+
t.libs << 'lib'
|
21
|
+
t.pattern = 'test/**/*_test.rb'
|
22
|
+
t.verbose = true
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'Generate documentation for the html_test plugin.'
|
26
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
27
|
+
rdoc.rdoc_dir = 'rdoc'
|
28
|
+
rdoc.title = 'HtmlTest'
|
29
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
30
|
+
rdoc.rdoc_files.include('README')
|
31
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
32
|
+
end
|
33
|
+
|
34
|
+
begin
|
35
|
+
require 'jeweler'
|
36
|
+
Jeweler::Tasks.new do |gem|
|
37
|
+
gem.name = "ccls-html_test"
|
38
|
+
gem.summary = %Q{Ruby on Rails plugin for HTML validation and link checking}
|
39
|
+
gem.description = %Q{Ruby on Rails plugin for HTML validation and link checking}
|
40
|
+
gem.email = "github@jakewendt.com"
|
41
|
+
gem.homepage = "http://github.com/ccls/html_test"
|
42
|
+
gem.authors = ["Peter Marklund", "George 'Jake' Wendt"]
|
43
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
44
|
+
|
45
|
+
gem.files = FileList['**/*']
|
46
|
+
gem.files -= FileList['app/**/*']
|
47
|
+
gem.files -= FileList['config/**/*']
|
48
|
+
gem.files -= FileList['test/**/*']
|
49
|
+
gem.files -= FileList['log/**/*']
|
50
|
+
gem.files -= FileList['pkg/**/*']
|
51
|
+
gem.files -= FileList['**/versions/**/*']
|
52
|
+
gem.files -= FileList['*Gemfile*']
|
53
|
+
end
|
54
|
+
Jeweler::GemcutterTasks.new
|
55
|
+
rescue LoadError
|
56
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
57
|
+
end
|
58
|
+
|
59
|
+
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.3.5
|
@@ -0,0 +1,57 @@
|
|
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 = "ccls-html_test"
|
8
|
+
s.version = "0.3.5"
|
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 = "2012-08-06"
|
13
|
+
s.description = "Ruby on Rails plugin for HTML validation and link checking"
|
14
|
+
s.email = "github@jakewendt.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.rdoc"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"README.rdoc",
|
20
|
+
"Rakefile",
|
21
|
+
"VERSION",
|
22
|
+
"ccls-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/ccls-html_test.rb",
|
33
|
+
"lib/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/rails",
|
41
|
+
"script/validate"
|
42
|
+
]
|
43
|
+
s.homepage = "http://github.com/ccls/html_test"
|
44
|
+
s.require_paths = ["lib"]
|
45
|
+
s.rubygems_version = "1.8.24"
|
46
|
+
s.summary = "Ruby on Rails plugin for HTML validation and link checking"
|
47
|
+
|
48
|
+
if s.respond_to? :specification_version then
|
49
|
+
s.specification_version = 3
|
50
|
+
|
51
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
52
|
+
else
|
53
|
+
end
|
54
|
+
else
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
@@ -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 -->
|