XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition (794 page)

BOOK: XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition
12.31Mb size Format: txt, pdf, ePub

Technically, this interface is rather poorly named. The Internet RFCs distinguish the process of
resolving
a relative URI against a base URI, which is essentially a syntactic operation on two character strings, from the process of
dereferencing
the resulting absolute URI, which typically sends a request over the wires to retrieve some resource. Although the
URIResolver
is passed the relative URI and base URI as separate arguments, it would be bad practice to resolve the relative URI in a nonstandard way. The real power of the
URIResolver
is its ability to control how the absolute URI is dereferenced.

The interface defines only one method:

Method
Description
Source resolve(String, String)
The first argument is a relative URI, the second is the base URI against which it is resolved. The method returns a
Source
containing the requested document, or throws a
TransformerException
if it cannot retrieve it. It may also return null, indicating that the default
URIResolver
should be used.

There is a practical problem that the JAXP interface does not address, namely the XSLT rule that if you call the
document()
function twice to fetch the same absolute URI, the same document should be returned each time. Since the
URIResolver
accepts the relative URI and base URI as separate arguments, but does not actually return an absolute URI, it's not entirely clear whether it is the responsibility of the processor or the
URIResolver
to enforce this rule, especially when the URI is in a format that the XSLT processor itself does not recognize, as in the example above.

Note also that the arguments are supplied in the opposite order to those of the Java
java.net.URI
class.

Examples of JAXP Transformations

This section provides some simple examples of applications that use the JAXP API in different ways to control a transformation.

Example 1: Transformation Using Files

This example (
FileTransform.java
) performs a single transformation, reading the source document and stylesheet from files, and sending the XML output to another file.

import javax.xml.transform.*;

import javax.xml.transform.stream.*;

import java.io.File;

public class FileTransform {

    public static void main(String[] args) throws Exception {

        StreamSource source = new StreamSource(new File(args[0]));

        StreamSource style = new StreamSource(new File(args[1]));

        StreamResult out = new StreamResult(new File(args[2]));

        TransformerFactory factory = TransformerFactory.newInstance();

        Transformer t = factory.newTransformer(style);

        t.transform(source, out);

    }   

}

This is a minimal JAXP application.

At one time I was reluctant to supply
File
objects to the JAXP
StreamSource
and
StreamResult
constructors, because the filename-to-URI conversion was buggy. In recent releases the problems seem to have been fixed.

Assuming you have installed the Sun Java JDK, you can compile this application by the command:

javac FileTransform.java

This assumes that the directory containing the Java source file is the current directory. Once you have compiled the code, you can run it from the command line, for example:

java FileTransform source.xml style.xsl out.html

Of course, this is not a very professionally written application. It will fall over with a stack trace if incorrect arguments are supplied, if either of the input files doesn't exist, or if errors occur during the transformation; but it's a start. My aim in these examples is to show how the main JAXP classes work, not to teach you professional Java programming.

Because some people like to type examples exactly as they are written in the book, the folder containing the Java applications also contains specimen XML and XSL files called
source.xml
and
style.xsl
. So if you make this folder your current directory, you should be able to type the command line above exactly as shown. But, of course, the Java application will handle any source file and any stylesheet. The stylesheet
style.xsl
uses the construct shown at the start of this chapter to place in the output file a comment identifying which XSLT processor was used. So by experimenting with different classpath settings you should be able to satisfy yourself that this code works with multiple XSLT processors.

Example 2: Supplying Parameters and Output Properties

This example,
Parameters.java
, enhances the previous example:

  • It allows a stylesheet parameter to be supplied from the command line.
  • It modifies the output properties defined in the stylesheet.
  • It directs the output to
    System.out
    instead of a file.

The
main()
method of the enhanced application looks like this:

public static void main(String[] args) throws Exception {

    StreamSource source = new StreamSource(new File(args[0]));

    StreamSource style = new StreamSource(new File(args[1]));

    String title = args[2];

    TransformerFactory factory = TransformerFactory.newInstance();

    Transformer t = factory.newTransformer(style);

    t.setParameter(“title”, title);

    t.setOutputProperty(OutputKeys.INDENT, “no”);

    t.transform(source, new StreamResult(System.out));

}

This version of the program can be run using a command such as the following. The third argument on the command line (written in quotes because it contains spaces) is now a parameter value for the stylesheet, instead of the output filename.

java Parameters source.xml style.xsl “New organization structure”

Comparing the output with that of the previous example, note that the HTML is no longer indented, and that the contents of the
<br/></span>and<br/><span><h1><br/></span>elements have changed. And, of course, the output is written to the console this time.<br/></p><p>Example 3: Holding Documents in Memory<br/></p><p>In this example we will hold both the stylesheet and the source document in memory so that they can be used repeatedly. In principle, this would allow us to run different source documents past the same stylesheet, or to use different stylesheets to transform the same source document, but in practice, to keep the example simple, we'll use the same source document and stylesheet repeatedly, changing only the parameters to the transformation. We'll do one transformation using each of the parameters supplied on the command line.<br/></p><p>To keep the source document in memory, create a DOM. One way of doing this would be to use the<br/><span>DocumentBuilder<br/></span>class defined in the first section of this appendix. But I'd prefer to stick to using the<br/><span>javax.xml.transform<br/></span>interfaces in these examples, so I'll do it in a different way. JAXP makes it very easy to do an identity transform, and to build the DOM—all you need is an identity transform that takes the serial file as input and produces the DOM as output.<br/></p><p>You could also keep the stylesheet in memory as a DOM, but this would mean validating and compiling it each time it is used. It's better to keep the compiled stylesheet, that is, the<br/><span>Templates<br/></span>object.<br/></p><p>The main program of this example (<br/><span>Repeat.java<br/></span>) looks like this:<br/></p><div><p><span>public static void main(String[] args) throws Exception {<br/></span></p><p><span>    StreamSource source = new StreamSource(new File(args[0]));<br/></span></p><p><span>    StreamSource style = new StreamSource(new File(args[1]));<br/></span></p><p><span>    TransformerFactory factory = TransformerFactory.newInstance();<br/></span></p><p><span>    // Build a DOM using an identity transform<br/></span></p><p><span>    Transformer builder = factory.newTransformer();<br/></span></p><p><span>    DOMResult result = new DOMResult();<br/></span></p><p><span>    builder.transform(source, result);<br/></span></p><p><span>    Document doc = (Document)result.getNode();<br/></span></p><p><span>    // Compile the stylesheet<br/></span></p><p><span>    Templates templates = factory.newTemplates(style);<br/></span></p><p><span>    // do one transformation for each parameter supplied<br/></span></p><p><span>    for (int i=2; i<args.length; i++) {<br/></span></p><p><span>        Transformer t = templates.newTransformer();<br/></span></p><p><span>        System.out.println(“======= TITLE = ” + args[i] + “=======“);<br/></span></p><p><span>        t.setParameter(“title”, args[i]);<br/></span></p><p><span>        t.transform(new StreamSource(source), new StreamResult(System.out));<br/></span></p><p><span>    }<br/></span></p><p><span>}<br/></span></p></div><p>You can run this application from the command line with a command such as:<br/></p><div><p><span>java Repeat source.xml style.xsl one two three four<br/></span></p></div><p>This will run the transformation four times, producing output HTML with the title set to<br/><span><img src="/files/04/27/65/f042765/public/ll.gif" />one<br/><img src="/files/04/27/65/f042765/public/gg.gif" /></span>,<br/><span><img src="/files/04/27/65/f042765/public/ll.gif" />two<br/><img src="/files/04/27/65/f042765/public/gg.gif" /></span>,<br/><span><img src="/files/04/27/65/f042765/public/ll.gif" />three<br/><img src="/files/04/27/65/f042765/public/gg.gif" /></span>, and<br/><span><img src="/files/04/27/65/f042765/public/ll.gif" />four<br/><img src="/files/04/27/65/f042765/public/gg.gif" /></span>in turn.<br/></p></div> </div> <div class="col-xs-12 text-left pagination-container"> <ul class="pagination"><li class="prev"><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-793" data-page="792">«</a></li> <li class="first"><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online" data-page="0">1</a></li> <li class="disabled"><span>...</span></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-395" data-page="394">395</a></li> <li class="disabled"><span>...</span></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-789" data-page="788">789</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-790" data-page="789">790</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-791" data-page="790">791</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-792" data-page="791">792</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-793" data-page="792">793</a></li> <li class="active"><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-794" data-page="793">794</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-795" data-page="794">795</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-796" data-page="795">796</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-797" data-page="796">797</a></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-798" data-page="797">798</a></li> <li class="disabled"><span>...</span></li> <li><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-850" data-page="849">850</a></li> <li class="disabled"><span>...</span></li> <li class="last"><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-901" data-page="900">901</a></li> <li class="next"><a href="/english-books/full-book-xslt-20-and-xpath-20-programmers-reference-4th-edition-read-online-chapter-795" data-page="794">»</a></li></ul> </div> <div class=""><div class="col-xs-12"><h2>Other books</h2></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-strike-back-read-online">Strike Back</a> by <span>Ryan, Chris</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-my-generation-read-online">My Generation</a> by <span>William Styron</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-bridies-fire-read-online">Bridie's Fire</a> by <span>Kirsty Murray</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-sealing-the-deal-business-and-pleasures-read-online">Sealing the Deal (Business and Pleasures)</a> by <span>Lovecraft, Valentina</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-twenty-grand-read-online">Twenty Grand</a> by <span>Rebecca Curtis</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-argus-accepting-the-challenge-read-online">Argus: Accepting the Challenge</a> by <span>Jana Leigh</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-crooked-hearts-read-online">Crooked Hearts</a> by <span>Patricia Gaffney</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-heavy-metal-islam-read-online">Heavy Metal Islam</a> by <span>Mark LeVine</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-the-finale-read-online">The Finale</a> by <span>Treasure Hernandez</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <g> <path d="m419.17 410.104v62.4h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-19.4c0-11.87 9.63-21.5 21.5-21.5z" fill="#d9ecfd"/> <path d="m419.17 441.304v31.2h-288.17c-11.87 0-21.5-9.63-21.5-21.5v-9.7z" fill="#c5e2ff"/> <path d="m132.68 378.104v-370.604h-20.18c-19.33 0-35 15.67-35 35v389.104c0-29.645 24.103-53.64 53.748-53.506z" fill="#db3915"/> <path d="m132.68 7.5h301.82v370.604h-301.82z" fill="#fc5a36"/><path d="m131 378.104c-29.547 0-53.5 23.953-53.5 53.5v19.396c0 29.547 23.953 53.5 53.5 53.5h303.5v-32h-303.5c-11.874 0-21.5-9.626-21.5-21.5v-19.396c0-11.874 9.626-21.5 21.5-21.5h303.5v-32z" fill="#a42b0f"/> <path d="m193.467 63.104h180.382v80.72h-180.382z" fill="#ffc85e"/> <g> <path d="m434.5 0h-322c-23.435 0-42.5 19.059-42.5 42.485v408.515c0 33.635 27.364 61 61 61h303.5c4.143 0 7.5-3.358 7.5-7.5v-32c0-4.142-3.357-7.5-7.5-7.5h-7.83v-47.396h7.83c4.143 0 7.5-3.358 7.5-7.5v-402.604c0-4.142-3.358-7.5-7.5-7.5zm-349.5 42.485c0-15.155 12.337-27.485 27.5-27.485h12.68v263.534c0 4.142 3.357 7.5 7.5 7.5s7.5-3.358 7.5-7.5v-263.534h286.82v355.604h-286.82v-59.38c0-4.142-3.357-7.5-7.5-7.5s-7.5 3.358-7.5 7.5v59.664c-15.988 1.521-30.186 9.242-40.18 20.721zm326.67 391.319h-53.67c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h53.67v16.196h-280.67c-9.167 0-14.875-7.396-14-16.196h208.31c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-208.31c-.875-9.45 4.831-16.2 14-16.2h280.67zm15.33-31.2h-296c-15.99 0-29 13.009-29 29v19.396c0 15.991 13.01 29 29 29h296v17h-296c-25.364 0-46-20.636-46-46v-19.396c0-25.364 20.636-46 46-46h296z"/><path d="m193.469 151.324h180.38c4.143 0 7.5-3.358 7.5-7.5v-80.72c0-4.142-3.357-7.5-7.5-7.5h-45.349c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h37.85v65.72h-165.38v-65.72h94.84c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5h-102.34c-4.143 0-7.5 3.358-7.5 7.5v80.72c-.001 4.142 3.357 7.5 7.499 7.5z"/> <path d="m341.658 241.592h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/><path d="m341.658 277.409h-116c-4.143 0-7.5 3.358-7.5 7.5s3.357 7.5 7.5 7.5h116c4.143 0 7.5-3.358 7.5-7.5s-3.357-7.5-7.5-7.5z"/> </g> </g> </svg><div><a href="/english-books/full-book-dodger-read-online">Dodger</a> by <span>Terry Pratchett</span></div></div></div> <!--er--> </div> </div> <div class="row" style="margin-top: 15px;"> </div> </div> </div> <footer class="footer"> <div class="container"> <p class="pull-left"> © FullEnglishBooks 2015 - 2024    Contact for me fullenglishbooks.com@aol.com </p> <p class="pull-right"> <!--LiveInternet counter--> <script type="text/javascript"> document.write("<a href='//www.liveinternet.ru/click' "+ "target=_blank><img src='//counter.yadro.ru/hit?t50.6;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";h"+escape(document.title.substring(0,150))+";"+Math.random()+ "' alt='' title='LiveInternet' "+ "border='0' width='31' height='31'><\/a>") </script> <!--/LiveInternet--> </p> </div> </footer> <script src="/assets/ba91f165/jquery.js?v=1529425591"></script> <script src="/assets/618ab67e/yii.js?v=1529414259"></script> <script src="/js/site.js?v=1722099411"></script> <script src="/assets/5e1636ad/js/bootstrap.js?v=1529424553"></script> </body> </html>