libxslt-ruby 1.1.1-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,34 @@
1
+ <!ELEMENT commentary (meta, body)>
2
+ <!ELEMENT meta (author, version, date, id, title, subtitle?)>
3
+
4
+ <!-- Metadata about the requirements -->
5
+ <!ENTITY % string "#PCDATA">
6
+ <!ENTITY % character "#PCDATA">
7
+ <!ENTITY % letter "#PCDATA">
8
+ <!ENTITY % number_att "CDATA">
9
+
10
+
11
+ <!ELEMENT author (first_name, last_name, email)>
12
+
13
+ <!ELEMENT first_name (%string;)>
14
+ <!ELEMENT last_name (%string;)>
15
+ <!ELEMENT email (%string;)>
16
+
17
+ <!ELEMENT version (#PCDATA)>
18
+ <!ELEMENT date (#PCDATA)>
19
+ <!ELEMENT id (#PCDATA)>
20
+ <!ELEMENT title (#PCDATA)>
21
+ <!ELEMENT subtitle (#PCDATA)>
22
+
23
+ <!ELEMENT body (para+)>
24
+
25
+
26
+ <!ELEMENT para (#PCDATA|thought|url|ol)*>
27
+ <!ATTLIST para
28
+ style (default|ps) "default">
29
+
30
+ <!ELEMENT ol (li+)>
31
+ <!ELEMENT li (#PCDATA)>
32
+ <!ELEMENT url (#PCDATA)>
33
+ <!ELEMENT thought (#PCDATA)>
34
+
@@ -0,0 +1,154 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <?xml-stylesheet href="fuzface.xsl" type="text/xsl"?>
3
+
4
+ <!DOCTYPE commentary SYSTEM "commentary.dtd">
5
+
6
+ <commentary>
7
+ <meta>
8
+ <author>
9
+ <first_name>Sean</first_name>
10
+ <last_name>Chittenden</last_name>
11
+ <email>sean@chittenden.org</email>
12
+ </author>
13
+ <version>$Version$</version>
14
+ <date>$Date$</date>
15
+ <id>$Id$</id>
16
+ <title>Fuzface...</title>
17
+ <subtitle>The Internet's a big place and here's some proof...</subtitle>
18
+ </meta>
19
+
20
+ <body>
21
+ <para>
22
+ I think it's a tragedy that I'm going to start off my new
23
+ commentary by talking about facial hair and the Internet.
24
+ Something about that just screams pathetic, but whatever: it's
25
+ humor and that's life.
26
+ </para>
27
+
28
+ <para>
29
+ I've been working at home for a while now, which has been great.
30
+ I've been doing a lot of reading, good work, contributing to the
31
+ FreeBSD project, and living life at my own pace. The problem?
32
+ I don't have to interact with people, so I've let my appearance
33
+ slide a bit, most notably I've gone two weeks without shaving
34
+ and I have an awful hairy face.
35
+ </para>
36
+
37
+ <para>
38
+ Nothing is worse than going for a hard run, coming back, and
39
+ then bending your head down so that the hairs under your chin
40
+ touch the hairs on your neck. This has to be one of the most
41
+ disgusting/gross feelings I've experienced in a while. While
42
+ today wasn't the first time I'd experienced such a slimy tangled
43
+ mess, it is the first time I seriously considered shaving part
44
+ of my face, but not all of it: I was considering a beard.
45
+ </para>
46
+
47
+ <para>
48
+ Alright, so it's 5pm and I'm a sweaty post-run mess (it was 110
49
+ degrees in direct sunlight according to my thermometer) and
50
+ considering the possibility of growing a beard. Swifty nift?
51
+ Maybe. This is something I'd never done before, let alone
52
+ seriously consider. Normally I'd call my dad for such manly
53
+ advice, but he is: a) normally in another state, and; b) in
54
+ another country right now probably growing a beard (he's
55
+ notorious for coming back from a trip with a gnarly unshaven
56
+ face, sometimes he'll shape it into a decent beard). So, what's
57
+ a tech-junkie to do? Hop on the Internet and see if Google's
58
+ able to provide me with some inspiration.
59
+ </para>
60
+
61
+ <para>
62
+ Sure enough, I typed in "pictures of bearded men" and I was able
63
+ to find something: 14,000 pages of something to be exact.
64
+ Anyway, so most of these were rinky dink sites, a few of them
65
+ had some promise. One guy was trying to start a tradition where
66
+ everyone grows a beard for New Years. As I was scrolling down
67
+ the page trying to find some pictures, my mind was having the
68
+ following thought process: <thought>This seems like a dumb
69
+ idea... New Years provides a perfectly good excuse to kiss some
70
+ total stranger that you've had your eye on for the duration of a
71
+ New Years party. Why waste such an opportunity with a crappy
72
+ kiss?</thought> And at about this point I said this page sucks,
73
+ and flipped back to my search results.
74
+ </para>
75
+
76
+ <para>
77
+ Since I'd never done this before, I didn't know what was
78
+ fashionably correct in terms of where a guy should shave under
79
+ his neck, or what the deal was... I knew there were lots of
80
+ styles out there, just none that I could picture in my mind
81
+ (save maybe Santa Claus and a few really gnarly beards that are
82
+ long enough to be used as full-body covering. Oooh! And don't
83
+ forget the Russian and Amish beards, those stand out in my mind
84
+ too.). Google, being pretty comprehensive, and the Internet
85
+ being huge, found the exact screwball page I was looking for:
86
+ <url>http://fuzface-gallery.tripod.com/</url>
87
+ </para>
88
+
89
+ <para>
90
+ I don't know if I really should be amazed at the sheer number of
91
+ entries that Google returned, or that the Internet is big enough
92
+ to house such random gallery of crap, but it is and it never
93
+ ceases to amaze me... it's almost as amazing as the fact that
94
+ some bozo spent the time to create such a page. Don't people
95
+ have lives? Oh wait, I just visited his page... so back to my
96
+ diatribe...
97
+ </para>
98
+
99
+ <para>
100
+ There were tons of faces, lots of men, lots of hair, and plenty
101
+ of styles to choose from. Page after page of faces and hair.
102
+ Ugh. This wasn't getting any where and I was now entertaining
103
+ the rebound though of shaving my head. Time to close my browser
104
+ and hop in the shower: I reak. So what'd I do? Well, after
105
+ looking through enough of those pictures, I decided a few
106
+ things:
107
+ </para>
108
+
109
+ <para>
110
+ <ol>
111
+ <li>
112
+ I'm amazed that the Internet is big enough to foster the
113
+ creation of such random and utterly useless information. Then
114
+ again, I've been on and using the Net since '95, so this
115
+ shouldn't surprise me that much.
116
+ </li>
117
+
118
+ <li>
119
+ There are a lot of guys out there with varying tastes in,
120
+ shall we say, "facial hair styles," most of which I find
121
+ pretty unappealing.
122
+ </li>
123
+
124
+ <li>
125
+ I don't like beards. After one clogged drain, two
126
+ reapplications of shaving cream, and a few pases with the
127
+ razor, it took me about 5-10 minutes to get a nice cleanly
128
+ shaven face.
129
+ </li>
130
+
131
+ <li>
132
+ &lt;crass comment&gt;And - back me up here fellas, you can
133
+ sympathize with this feeling after you get done looking
134
+ through a magazine for a hair-cut style (ladies.. just smile
135
+ and nod and pretend you care) - after looking at a few dozen
136
+ pictures of men, I was able to safely reaffirm my desire for
137
+ heterosexual relations (translation from Bill Clintonese: have
138
+ sex with a woman). And with that thought in mind, I began to
139
+ pine for the college porn collection of old. Mmmm,
140
+ Playboy.&lt;/crass comment&gt;
141
+ </li>
142
+ </ol>
143
+ </para>
144
+
145
+ <para>
146
+ ::grin:: Until next time. -Sean
147
+ </para>
148
+
149
+ <para style="ps">
150
+ P.S. To the guys out there with beards, this is just my
151
+ opinion: take it with a grain of salt.
152
+ </para>
153
+ </body>
154
+ </commentary>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" ?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
+ <xsl:include href="ramblings.xsl" />
4
+ </xsl:stylesheet>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <doc>abc</doc>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version='1.0'
3
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
4
+ xmlns:foo='http://example.com/foo'
5
+ exclude-result-prefixes='foo'>
6
+
7
+ <xsl:param name='bar'>failure</xsl:param>
8
+ <xsl:template match='/'>
9
+ <article><xsl:value-of select='$bar'/></article>
10
+ </xsl:template>
11
+ </xsl:stylesheet>
@@ -0,0 +1,46 @@
1
+ <?xml version="1.0" ?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
+ <xsl:template match="/">
4
+ <xsl:element name="html">
5
+ <xsl:element name="head">
6
+ <xsl:element name="title">Ramblings - <xsl:value-of select="commentary/meta/title" /> - <xsl:value-of select="commentary/meta/subtitle" /></xsl:element>
7
+ </xsl:element>
8
+
9
+ <xsl:element name="body">
10
+ <xsl:element name="h1"><xsl:value-of select="commentary/meta/title" /></xsl:element>
11
+ <xsl:element name="h3"><xsl:value-of select="commentary/meta/subtitle" /></xsl:element>
12
+ By: <xsl:value-of select="commentary/meta/author/first_name" /> <xsl:value-of select="commentary/meta/author/last_name" /><xsl:element name="br" />
13
+ Date: <xsl:value-of select="commentary/meta/date" /><xsl:element name="br" />
14
+
15
+ <xsl:for-each select="./commentary/body">
16
+ <xsl:apply-templates />
17
+ </xsl:for-each>
18
+
19
+ </xsl:element>
20
+ </xsl:element>
21
+ </xsl:template>
22
+
23
+ <xsl:template match="para">
24
+ <xsl:element name="p">
25
+ <xsl:apply-templates />
26
+ </xsl:element>
27
+ </xsl:template>
28
+
29
+ <xsl:template match="ol">
30
+ <xsl:element name="ol">
31
+ <xsl:apply-templates select="li" />
32
+ </xsl:element>
33
+ </xsl:template>
34
+
35
+ <xsl:template match="li">
36
+ <xsl:element name="li">
37
+ <xsl:value-of select="." />
38
+ </xsl:element>
39
+ </xsl:template>
40
+
41
+ <xsl:template match="thought">
42
+ <xsl:element name="i">
43
+ <xsl:value-of select="." />
44
+ </xsl:element>
45
+ </xsl:template>
46
+ </xsl:stylesheet>
@@ -0,0 +1,100 @@
1
+ # encoding: UTF-8
2
+ require 'test_helper'
3
+ require 'test/unit'
4
+
5
+ class TestDeprecated < Test::Unit::TestCase
6
+ def setup()
7
+ xsl_file = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
8
+ xml_file = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
9
+
10
+ @xslt = XML::XSLT.file(xsl_file)
11
+ @xslt.doc = XML::Document.file(xml_file)
12
+ @stylesheet = @xslt.parse
13
+ end
14
+
15
+ def tear_down()
16
+ @xslt = nil
17
+ @stylesheet = nil
18
+ end
19
+
20
+ def test_constants
21
+ assert_instance_of(Fixnum, XML::XSLT::MAX_DEPTH)
22
+ assert_instance_of(Fixnum, XML::XSLT::MAX_SORT)
23
+ assert_instance_of(String, XML::XSLT::ENGINE_VERSION)
24
+ assert_instance_of(Fixnum, XML::XSLT::LIBXSLT_VERSION)
25
+ assert_instance_of(Fixnum, XML::XSLT::LIBXML_VERSION)
26
+ assert_instance_of(String, XML::XSLT::XSLT_NAMESPACE)
27
+ assert_instance_of(String, XML::XSLT::DEFAULT_URL)
28
+ assert_instance_of(String, XML::XSLT::DEFAULT_VENDOR)
29
+ assert_instance_of(String, XML::XSLT::DEFAULT_VERSION)
30
+ assert_instance_of(String, XML::XSLT::NAMESPACE_LIBXSLT)
31
+ assert_instance_of(String, XML::XSLT::NAMESPACE_SAXON)
32
+ assert_instance_of(String, XML::XSLT::NAMESPACE_XT)
33
+ assert_instance_of(String, XML::XSLT::NAMESPACE_XALAN)
34
+ assert_instance_of(String, XML::XSLT::NAMESPACE_NORM_SAXON)
35
+ end
36
+
37
+ def test_new
38
+ xslt = XML::XSLT.new
39
+ assert_instance_of(XML::XSLT::Stylesheet, xslt)
40
+
41
+ xslt.filename = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
42
+ assert_instance_of(String, xslt.filename)
43
+ end
44
+
45
+ def test_file_type
46
+ assert_instance_of(XML::XSLT::Stylesheet, @xslt)
47
+ end
48
+
49
+ def test_doc
50
+ xsl_file = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
51
+ xml_file = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
52
+
53
+ xslt = XML::XSLT.file(xsl_file)
54
+ xslt.doc = XML::Document.file(xml_file)
55
+ assert_instance_of(XML::Document, xslt.doc)
56
+ end
57
+
58
+ def test_parse
59
+ xsl_file = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
60
+ xml_file = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
61
+
62
+ xslt = XML::XSLT.file(xsl_file)
63
+ stylesheet = xslt.parse
64
+ assert_instance_of(XML::XSLT::Stylesheet, stylesheet)
65
+ end
66
+
67
+ def test_parse
68
+ assert_instance_of(XML::XSLT::Stylesheet, @stylesheet)
69
+ end
70
+
71
+ def test_to_s
72
+ @stylesheet.apply
73
+ str = @stylesheet.to_s
74
+ assert_instance_of(String, str)
75
+ end
76
+
77
+ def test_save
78
+ @stylesheet.apply
79
+ @stylesheet.save(file = 'text.xml')
80
+ ensure
81
+ File.unlink(file) if file && File.exist?(file)
82
+ end
83
+
84
+ def test_print_invalid
85
+ @stylesheet.apply
86
+ @stylesheet.print
87
+ end
88
+
89
+ def test_save_invalid
90
+ assert_raises(ArgumentError) do
91
+ @stylesheet.save("str")
92
+ end
93
+ end
94
+
95
+ def test_print_invalid
96
+ assert_raises(ArgumentError) do
97
+ @stylesheet.print
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,70 @@
1
+ # encoding: UTF-8
2
+ require 'test/unit'
3
+ require 'test_helper'
4
+
5
+ class TestExslt < Test::Unit::TestCase
6
+ def setup
7
+ @namespace = 'http://test.ext'
8
+ @name = 'ext-func'
9
+ @func = lambda { |xp| xp.to_a.join('|') }
10
+ end
11
+
12
+ def teardown
13
+ LibXSLT::XSLT.instance_variable_get(:@module_function_registry).clear
14
+ # or
15
+ #LibXSLT::XSLT.unregister_module_function(@namespace, @name)
16
+ end
17
+
18
+ def test_register
19
+ assert !LibXSLT::XSLT.registered_module_function?(@namespace, @name)
20
+ assert LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
21
+ assert LibXSLT::XSLT.registered_module_function?(@namespace, @name)
22
+ end
23
+
24
+ def test_register_no_block
25
+ assert_raises(ArgumentError, 'no block given') {
26
+ LibXSLT::XSLT.register_module_function(@namespace, @name)
27
+ }
28
+ end
29
+
30
+ def test_register_repeated
31
+ assert_equal @func, LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
32
+ assert_equal @func, LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
33
+ assert_not_equal @func, LibXSLT::XSLT.register_module_function(@namespace, @name) { |*| }
34
+ end
35
+
36
+ def test_unregister
37
+ test_register # need to register before we can unregister
38
+ assert LibXSLT::XSLT.unregister_module_function(@namespace, @name)
39
+ assert !LibXSLT::XSLT.registered_module_function?(@namespace, @name)
40
+ end
41
+
42
+ def test_unregister_no_register
43
+ assert !LibXSLT::XSLT.registered_module_function?(@namespace, @name)
44
+ assert !LibXSLT::XSLT.unregister_module_function(@namespace, @name)
45
+ end
46
+
47
+ def test_unregister_repeated
48
+ test_register # need to register before we can unregister
49
+ assert_equal @func, LibXSLT::XSLT.unregister_module_function(@namespace, @name)
50
+ assert_nil LibXSLT::XSLT.unregister_module_function(@namespace, @name)
51
+ end
52
+
53
+ def test_callback
54
+ doc = XML::Document.file(File.join(File.dirname(__FILE__), 'files/fuzface.xml'))
55
+ xpath = '/commentary/meta/author/*'
56
+ stylesheet = XSLT::Stylesheet.new(XML::Document.string(<<-EOT))
57
+ <?xml version="1.0" ?>
58
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="#{@namespace}">
59
+ <xsl:template match="/">
60
+ <xsl:element name="root">
61
+ <xsl:value-of select="ext:#{@name}(#{xpath})" />
62
+ </xsl:element>
63
+ </xsl:template>
64
+ </xsl:stylesheet>
65
+ EOT
66
+
67
+ assert LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
68
+ assert_equal @func[doc.find(xpath)], stylesheet.apply(doc).root.content
69
+ end
70
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+ # To make testing/debugging easier, test within this source tree versus an installed gem
3
+
4
+ dir = File.dirname(__FILE__)
5
+ root = File.expand_path(File.join(dir, '..'))
6
+ lib = File.expand_path(File.join(root, 'lib'))
7
+
8
+ $LOAD_PATH << lib
9
+
10
+ begin
11
+ require 'xslt'
12
+ rescue LoadError
13
+ require 'rubygems'
14
+ require 'xslt'
15
+ end