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

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

In my experience, the most pervasive argument is the last one: it's surprising how often complex applications construct or modify stylesheets on the fly. But like it or not, the XML-based syntax is now an intrinsic feature of the language that has both benefits and drawbacks. It does make the language verbose, but in the end, the number of keystrokes has very little bearing on the ease or difficulty of solving particular transformation problems.

In XSLT 2.0, the long-windedness of the language has been reduced considerably by increasing the expressiveness of the non-XML part of the syntax, namely XPath expressions. Many computations that required five lines of XSLT code in 1.0 can now be expressed in a single XPath expression. Two constructs in particular led to this simplification: the conditional expression (
if..then..else
) in XPath 2.0; and the ability to define a function in XSLT (using

) that can be called directly from an XPath expression. To take the example discussed earlier, if you replace the template
f
by a user-written function
f
, you can replace the five lines in the example with:


The decision to base the XSLT syntax on XML has proved its worth in several ways that I would not have predicted in advance:

  • It has proved very easy to extend the syntax. Adding new elements and attributes is trivial; there is no risk of introducing parsing difficulties when doing so, and it is easy to manage backwards compatibility. (In contrast, extending XQuery's non-XML syntax without introducing parsing ambiguities is a highly delicate operation.)
  • The separation of XML parsing from XSLT processing leads to good error reporting and recovery in the compiler. It makes it much easier to report the location of an error with precision and to report many errors in one run of the compiler. This leads to a faster development cycle.
  • It makes it easier to maintain stylistic consistency between different constructs in the language. The discipline of defining the language through elements and attributes creates a constrained vocabulary with which the language designers must work, and these constraints impose a certain consistency of design.

No Side Effects

The idea that XSL should be a declarative language free of side effects appears repeatedly in the early statements about the goals and design principles of the language, but no one ever seems to explain
why
: what would be the user benefit?

A function or procedure in a programming language is said to have side effects if it makes changes to its environment; for example, if it can update a global variable that another function or procedure can read, or if it can write messages to a log file, or prompt the user. If functions have side effects, it becomes important to call them the right number of times and in the correct order. Functions that have no side effects (sometimes called pure functions) can be called any number of times and in any order. It doesn't matter how many times you evaluate the area of a triangle, you will always get the same answer; but if the function to calculate the area has a side effect such as changing the size of the triangle, or if you don't know whether it has side effects or not, then it becomes important to call it once only.

I expand further on this concept in the section on Computational Stylesheets in Chapter 17, page 985.

It is possible to find hints at the reason why this was considered desirable in the statements that the language should be equally suitable for batch or interactive use, and that it should be capable of
progressive rendering
. There is a concern that when you download a large XML document, you won't be able to see anything on your screen until the last byte has been received from the server. Equally, if a small change were made to the XML document, it would be nice to be able to determine the change needed to the screen display, without recalculating the whole thing from scratch. If a language has side effects, then the order of execution of the statements in the language has to be defined, or the final result becomes unpredictable. Without side effects, the statements can be executed in any order, which means it is possible, in principle, to process the parts of a stylesheet selectively and independently.

What it means in practice to be free of side effects is that you cannot update the value of a variable. This restriction is something many users find very frustrating at first, and a big price to pay for these rather remote benefits. But as you get the feel of the language and learn to think about using it the way it was designed to be used, rather than the way you are familiar with from other languages, you will find you stop thinking about this as a restriction. In fact, one of the benefits is that it eliminates a whole class of bugs from your code. I shall come back to this subject in Chapter 17, where I outline some of the common design patterns for XSLT stylesheets and, in particular, describe how to use recursive code to handle situations where in the past you would probably have used updateable variables to keep track of the current state.

Rule-Based

The dominant feature of a typical XSLT stylesheet is that it consists of a set of template rules, each of which describes how a particular element type or other construct should be processed. The rules are not arranged in any particular order; they don't have to match the order of the input or the order of the output, and in fact there are very few clues as to what ordering or nesting of elements the stylesheet author expects to encounter in the source document. It is this that makes XSLT a declarative language, because you specify what output should be produced when particular patterns occur in the input, as distinct from a procedural program where you have to say what tasks to perform in what order.

This rule-based structure is very like CSS, but with the major difference that both the patterns (the description of which nodes a rule applies to), and the actions (the description of what happens when the rule is matched) are much richer in functionality.

Example: Displaying a Poem

Let's see how we can use the rule-based approach to format a poem. Again, we haven't introduced all the concepts yet, and so I won't try to explain every detail of how this works, but it's useful to see what the template rules actually look like in practice.

Input

Let's take this poem as our XML source. The source file is called
poem.xml
, and the stylesheet is
poem.xsl
.


   Rupert Brooke

   1912

   Song

   

      And suddenly the wind comes soft,

      And Spring is here again;

      And the hawthorn quickens with buds of green

      And my heart with buds of pain.

   

   

      My heart all Winter lay so numb,

      The earth so dead and frore,

      That I never thought the Spring would come again

      Or my heart wake any more.

   

   

      But Winter's broken and earth has woken,

      And the small birds cry again;

      And the hawthorn hedge puts forth its buds,

      And my heart puts forth its pain.

   


Output

Let's write a stylesheet such that this document appears in the browser, as shown in
Figure 1-8
.

Stylesheet

It starts with the standard header.

   xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”

   version=“1.0”>

Now we write one template rule for each element type in the source document. The rule for the

element creates the skeleton of the HTML output, defining the ordering of the elements in the output (which doesn't have to be the same as the input order). The

instruction inserts the value of the selected element at this point in the output. The

instructions cause the selected child elements to be processed, each using its own template rule.


   

   

      <xsl:value-of select=“title”/>

   

   

      

      

      

      

   

   


In XSLT 2.0 we could replace the four

instructions with one, written as follows:


This takes advantage of the fact that the type system for the language now supports ordered sequences. The
,
operator performs list concatenation and is used here to form a list containing the
<br/></span>,<br/><span><author><br/></span>,<br/><span><stanza><br/></span>, and<br/><span><date><br/></span>elements in that order. Note that this includes all the<br/><span><stanza><br/></span>elements, so in general this will be a sequence containing more than four items.<br/></p><p>The template rules for the<br/><span><title><br/></span>,<br/><span><author><br/></span>, and<br/><span><date><br/></span>elements are very simple; they take the content of the element (denoted by<br/><span><img src="/files/04/27/65/f042765/public/lgray.gif" />select = “.”<br/><img src="/files/04/27/65/f042765/public/ggray.gif" /></span>), and surround it within appropriate HTML tags to define its display style.<br/></p><div><p><span><xsl:template match=“title”><br/></span></p><p><span>   <div align=“center”><br/></span></p><p><span>      <b><xsl:value-of select=“.”/></b><br/></span></p><p><span>   </div><br/></span></p><p><span></xsl:template><br/></span></p><p><span><xsl:template match=“author”><br/></span></p><p><span>   <div align=“center”><br/></span></p><p><span>      <b>By <xsl:value-of select=“.”/></b><br/></span></p><p><span>   </div><br/></span></p><p><span></xsl:template><br/></span></p><p><span><xsl:template match=“date”><br/></span></p><p><span>   <p><i><xsl:value-of select=“.”/></i></p><br/></span></p><p><span></xsl:template><br/></span></p></div><p>The template rule for the<br/><span><stanza><br/></span>element puts each stanza into an HTML paragraph, and then invokes processing of the lines within the stanza, as defined by the template rule for lines:<br/></p><div><p><span><xsl:template match=“stanza”><br/></span></p><p><span>   <p><xsl:apply-templates select=“line”/></p><br/></span></p><p><span></xsl:template><br/></span></p></div><p>The rule for<br/><span><line><br/></span>elements is a little more complex: if the position of the line within the stanza is an even number, it precedes the line with two non-breaking-space characters (<br/><span> <br/></span>). The<br/><span><xsl:if><br/></span>instruction tests a boolean condition, which in this case calls the<br/><span>position()<br/></span>function to determine the relative position of the current line. It then outputs the contents of the line, followed by an empty HTML<br/><span><br><br/></span>element to end the line.<br/></p><div><p><span><xsl:template match=“line”><br/></span></p><p><span>   <xsl:if test=“position() mod 2 = 0”>  </xsl:if><br/></span></p><p><span>   <xsl:value-of select=“.”/><br/><br/></span></p><p><span></xsl:template><br/></span></p></div><p>And to finish off, we close the<br/><span><xsl:stylesheet><br/></span>element:<br/></p><div><p><span></xsl:stylesheet><br/></span></p></div></div></div> </div> <div class="col-xs-12 text-left pagination-container"> <ul class="pagination"><li class="prev"><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/13-page" data-page="12">«</a></li> <li class="first"><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free" data-page="0">1</a></li> <li class="disabled"><span>...</span></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/5-page" data-page="4">5</a></li> <li class="disabled"><span>...</span></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/9-page" data-page="8">9</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/10-page" data-page="9">10</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/11-page" data-page="10">11</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/12-page" data-page="11">12</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/13-page" data-page="12">13</a></li> <li class="active"><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/14-page" data-page="13">14</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/15-page" data-page="14">15</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/16-page" data-page="15">16</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/17-page" data-page="16">17</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/18-page" data-page="17">18</a></li> <li class="disabled"><span>...</span></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/460-page" data-page="459">460</a></li> <li class="disabled"><span>...</span></li> <li class="last"><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/901-page" data-page="900">901</a></li> <li class="next"><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/15-page" data-page="14">»</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 version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/for-honor-we-stand-by-h-paul-honsinger-free">For Honor We Stand</a> by <span>Harvey G. Phillips, H. Paul Honsinger</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/dark-night-episode-2-the-darkest-nights-series-by-stefany-rattles-free">Dark Night: Episode 2 (The Darkest Nights Series)</a> by <span>Stefany Rattles</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/a-mobsters-independence-day-picnic-by-beth-mathison-free">A Mobster's Independence Day Picnic</a> by <span>Beth Mathison</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/raven-summer-by-david-almond-free">Raven Summer</a> by <span>David Almond</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/covenant-87693-by-sabrina-benulis-free">Covenant</a> by <span>Sabrina Benulis</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/trading-in-futures-by-steve-miller-free">Trading in Futures</a> by <span>Sharon Lee and Steve Miller, Steve Miller</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/for-the-sake-of-elena-by-elizabeth-george-free">For the Sake of Elena</a> by <span>Elizabeth George</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/sammy-keyes-and-the-dead-giveaway-by-wendelin-van-draanen-free">Sammy Keyes and the Dead Giveaway</a> by <span>Wendelin Van Draanen</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/jonah-havensby-by-bob-bannon-free">Jonah Havensby</a> by <span>Bob Bannon</span></div></div><div class="list-b-item col-xs-12 col-md-6"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <path style="fill:#97D4AC;" d="M87.385,472.249V39.751l0,0c0-17.696,14.478-32.174,32.174-32.174h301.293 c0.684,0,1.238,0.554,1.238,1.238v127.488v64.355v239.418h-38.792L87.385,472.249z"/> <path style="fill:#E3E3E3;" d="M404.64,440.075H119.559c-17.696,0-32.174,14.478-32.174,32.174l0,0 c0,17.696,14.478,32.174,32.174,32.174H404.64L404.64,440.075L404.64,440.075z"/> <path style="fill:#FFF3DC;" d="M336.079,214.141H194.741c-3.348,0-6.062-2.714-6.062-6.062v-65.845c0-3.348,2.714-6.062,6.062-6.062 H336.08c3.348,0,6.062,2.714,6.062,6.062v65.845C342.141,211.428,339.427,214.141,336.079,214.141z"/> <polygon style="fill:#FFC433;" points="354.769,91.023 327.354,87.676 299.937,91.023 299.937,7.577 354.769,7.577 "/> <path style="opacity:0.1;enable-background:new ;" d="M420.852,7.577h-42.431c0.684,0,1.238,0.555,1.238,1.238v127.488v64.355 v239.417h-17.449v24.598v15.154v24.597h42.431v-24.597v-15.154v-24.598h17.449V200.657v-64.355V8.815 C422.089,8.131,421.536,7.577,420.852,7.577z"/> <path d="M424.615,147.89c4.185,0,7.577-3.391,7.577-7.577V8.815c0-4.86-3.954-8.815-8.815-8.815h-68.609h-54.83H119.559 C97.64,0,79.808,17.831,79.808,39.751v432.498C79.808,494.168,97.64,512,119.56,512h305.055c4.185,0,7.577-3.391,7.577-7.577 c0-4.186-3.392-7.577-7.577-7.577h-12.398v-49.194h12.398c4.185,0,7.577-3.391,7.577-7.577V182.203c0-4.186-3.392-7.577-7.577-7.577 c-4.185,0-7.577,3.391-7.577,7.577v250.296H119.559c-9.282,0-17.825,3.207-24.598,8.559V39.751 c0.001-13.563,11.035-24.597,24.598-24.597h172.802v75.87c0,4.186,3.392,7.577,7.577,7.577h54.831c4.185,0,7.577-3.391,7.577-7.577 v-75.87h54.692v125.159C417.038,144.497,420.43,147.89,424.615,147.89z M119.559,447.652h277.504v17.021h-60.491 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h60.491v17.02H119.559c-13.563,0-24.598-11.034-24.598-24.597 C94.962,458.685,105.996,447.652,119.559,447.652z M347.192,83.447h-39.677V15.154h39.677V83.447z"/> <path d="M128.504,247.686v160.888c0,4.186,3.392,7.577,7.577,7.577s7.577-3.391,7.577-7.577V247.686 c0-4.186-3.392-7.577-7.577-7.577S128.504,243.5,128.504,247.686z"/> <path d="M204.982,145.117c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-10.86 c-7.52,0-13.639,6.118-13.639,13.639v65.846c0,7.52,6.118,13.639,13.639,13.639H335.46c7.52,0,13.639-6.118,13.639-13.639v-65.846 c0-7.52-6.118-13.639-13.639-13.639H230.394c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577h103.551v62.815 H195.637v-62.815H204.982z"/> <path d="M305.632,184.101c4.185,0,7.577-3.391,7.577-7.577c0-4.186-3.392-7.577-7.577-7.577h-80.443 c-4.185,0-7.577,3.391-7.577,7.577c0,4.186,3.392,7.577,7.577,7.577H305.632z"/> </svg><div><a href="/pdf-novels/apple-tv-4th-generation-with-siri-remote-users-guide-your-media-tips-tricks-manual-by-shelby-johnson-free">Apple TV 4th Generation with Siri Remote User's Guide: Your Media Tips & Tricks Manual</a> by <span>Shelby Johnson</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"> © 100 Vampire Novels 2015 - 2024    Contact for me vampirenovels@hotmail.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> <div class="p3bnr" style="display: none;"> <div class="p3bnr-inner"> <div></div> <div> <div> <div>XSLT 2.0 And XPath 2.0 Programmer's Reference, 4th Edition</div> <div>You must be logged in to Read or Download</div> <a href="https://file.100-vampirenovels.net/TDS/?q=XSLT+2.0+And+XPath+2.0+Programmer%27s+Reference%2C+4th+Edition&sub=542&place=bb3" target="_blank" rel="nofollow"> CONTINUE <img src="/i/arrow.png" /> </a> <div><span class="glyphicon glyphicon-lock"></span> SECURE VERIFIED</div> </div> </div> <div> <a class="p3bnr-closer" href="javascript:;">Close X</a> </div> </div> </div> </body> </html>