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

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

This style of processing is called
push
processing. It is driven by the

instruction, as if the processor is pushing the nodes out of the door, saying “is anyone interested in dealing with this one?”

In this description I occasionally talk of instructions writing to the result tree. This is how the process was described in XSLT 1.0, and it accounts for the name push. It's a convenient way to think about what's going on. Technically, as we have seen, instructions don't write to the result tree; they are evaluated to produce a sequence (usually a sequence of nodes, but occasionally atomic values) and this sequence is then used by the calling instruction, often to construct the children of a new element. The importance of this model is that in XSLT 2.0, there are some situations in which the result of a sequence constructor is not used directly to build part of a result tree, but can be used in some other way, for example as the result of an XPath function call.

In such situations it is possible for an XPath expression to encounter nodes such as attributes and text nodes that have no parent, because they have not yet been attached to a result tree.

Controlling Which Nodes to Process

Simple push processing works very well when the data in the output is to have the same structure and sequence as the data in the input, and all we want to do is add or remove a few tags or perform other simple editing of values as we go along.

In the previous example, it wouldn't work so well if the properties of each book were less predictable, for example if some of the books had no price, or if the title and author could appear in either order. In this case the HTML table that we generated wouldn't be nicely arranged in columns any more, because generating a new cell for each property we encounter is not necessarily the right thing to do.

In such circumstances, there are two choices:

  • Be more precise about which nodes to process, rather than just saying
    process all children of the current node
    .
  • Be more precise about how to process them, rather than just saying
    choose the best-fit template rule
    .

Let's try the first option.

Example: Controlling the Sequence of Processing

We can gain greater control over
which
nodes are to be processed by changing the

template in
books.xsl
, as follows:


   

     

     

   


Instead of selecting all child elements and finding the appropriate template rule for each one, this now explicitly selects first the

child element, then the
<br/></span>child element, and then the<br/><span><price><br/></span>child element.<br/></p><p>This will still work, and it's more robust than our previous attempt, but it will still produce a ragged table if there are any<br/><span><book><br/></span>elements without an<br/><span><author><br/></span>(say), or with more than one.<br/></p><div><p>The comma operator used in the expression<br/><span><img src="/files/04/27/65/f042765/public/lgray.gif" />select=“author, title, price”<br/><img src="/files/04/27/65/f042765/public/ggray.gif" /></span>is new in XPath 2.0. It simply concatenates several sequences (which might be single items, but could also be empty, or contain multiple items) into a single sequence, in the order specified.<br/></p></div><p>As we want a regular structure in the output and because we know a lot about the structure of the source document, we'd probably be better off in this situation defining all the processing in the<br/><span><book><br/></span>template rather than relying on template rules to match each of its child elements.<br/></p></div><div><p>Example: Selecting Nodes Explicitly<br/></p><p>We can gain greater control over<br/><span>how<br/></span>nodes are to be processed by writing the<br/><span><book><br/></span>template rule in the following manner.<br/></p><div><p><span><xsl:template match=“book”><br/></span></p><p><span>  <tr><br/></span></p><p><span>    <td><xsl:number/></td><br/></span></p><p><span>    <td><xsl:value-of select=“author”/></td><br/></span></p><p><span>    <td><xsl:value-of select=“title”/></td><br/></span></p><p><span>    <td><xsl:value-of select=“price”/></td><br/></span></p><p><span>  </tr><br/></span></p><p><span></xsl:template><br/></span></p></div></div><p>Some people call this<br/><span>pull<br/></span>processing, because instead of the template pushing nodes out of the door to be picked up by another template, it is pulling the nodes in and handling them itself.<br/></p><p>The pattern-matching (or push) style of processing is the most characteristic feature of XSLT, and it works very well in applications where it makes sense to describe the handling of each type of node in the source document independently. However, there are many other techniques available, all of which are equally valuable. From within a template rule that is processing one particular node, the main alternatives if you want access to information in other nodes are as follows:<br/></p><ul><li>Call<br/><span><xsl:apply-templates><br/></span>to process those nodes using their appropriate template rules.<br/></li><li>Call<br/><span><xsl:apply-templates><br/></span>in a particular<br/><span>mode<br/></span>(see later) to process those nodes using the template rules for the relevant mode.<br/></li><li>Call<br/><span><xsl:value-of><br/></span>to extract the required information from the nodes directly.<br/></li><li>Call<br/><span><xsl:for-each><br/></span>to perform explicit processing of each of the nodes in turn.<br/></li><li>Call<br/><span><xsl:call-template><br/></span>to invoke a specific template by name, rather than relying on pattern matching to decide which template to invoke.<br/></li></ul><p>Further discussion of the different approaches to writing a stylesheet is included in Chapter 17,<br/><span>Stylesheet Design Patterns<br/></span>.<br/></p><p>Modes<br/></p><p>Sometimes you want to process the same node in the source tree more than once, in different ways. The classic example is to produce a table of contents. When generating the table of contents, you want to handle all the section headings in one way, and when producing the body of the document, you want to handle them in a different way.<br/></p><p>One way around this problem is to use push processing on one of these passes through the data, and pull processing on all the other occasions. However, this could be very constraining. Instead, you can define different modes of processing, one for each pass through the data. You can name the mode of processing when you call<br/><span><xsl:apply-templates><br/></span>, and the only template rules that will be considered are those that specify the same mode. For example, if you specify:<br/></p><div><p><span><xsl:apply-templates select=“heading-1” mode=“table-of-contents”/><br/></span></p></div><p>Then the selected template rule might be one defined as:<br/></p><div><p><span><xsl:template match=“heading-1” mode=“table-of-contents”><br/></span></p><p><span>…<br/></span></p><p><span></xsl:template><br/></span></p></div><p>Further details of how to use modes are in Chapter 6, page 242 and a real-life case study showing how to use them to generate a table of contents is in Chapter 18, page 1019.<br/></p><p>Built-In Template Rules<br/></p><p>What happens when<br/><span><xsl:apply-templates><br/></span>is invoked to process a node, and there is no template rule in the stylesheet that matches that node?<br/></p><p>A<br/><span>built-in template rule<br/></span>is invoked.<br/></p><p>There is a built-in template rule for each kind of node. The built-in rules work as follows.<br/></p><table><tr><td>Node Kind<br/></td><td>Built-In Template Rule<br/></td></tr><tr><td>Document<br/></td><td>Call<br/><span><xsl:apply-templates><br/></span>to process the children of the document node, in the same mode as the calling mode.<br/></td></tr><tr><td>Element<br/></td><td>Call<br/><span><xsl:apply-templates><br/></span>to process the children of this element, in the same mode as the calling mode.<br/></td></tr><tr><td>Attribute<br/></td><td>Copy the attribute value to the result tree, as text—not as an attribute node.<br/></td></tr><tr><td>Text<br/></td><td>Copy the text to the result tree.<br/></td></tr><tr><td>Comment<br/></td><td>Do nothing.<br/></td></tr><tr><td>Processing instruction<br/></td><td>Do nothing.<br/></td></tr><tr><td>Namespace<br/></td><td>Do nothing.<br/></td></tr></table><p>The built-in template rules will only be invoked if there is no rule that matches the node anywhere in the stylesheet.<br/></p><p>There is no way to override the built-in template for namespace nodes, because there is no pattern that will match a namespace node. If you call<br/><span><xsl:apply-templates><br/></span>to process namespace nodes, nothing happens. If you want to process all the namespace nodes for an element, use:<br/></p><div><p><span><xsl:for-each select=“namespace::*”><br/></span></p></div><p>Conflict Resolution Policy<br/></p><p>Conversely, what happens when there is more than one template rule whose pattern matches a particular node? As I mentioned earlier, the conflict resolution policy comes into play.<br/></p><p>This works as follows:<br/></p><ul><li>First the<br/><span>import precedence<br/></span>of each rule is considered. As Chapter 3 will show, one stylesheet may import another, using the<br/><span><xsl:import><br/></span>declaration, and this part of the policy basically says that when stylesheet A imports stylesheet B, the rules in A take precedence over the rules in B.<br/></li><li>Then the<br/><span>priority<br/></span>of each rule is examined. The priority is a numeric value, and the higher the number, the higher the priority. You can either specify the priority explicitly in the<br/><span>priority<br/></span>attribute of the<br/><span><xsl:template><br/></span>element or leave the system to allocate a default priority. In this case, the system allocates a priority that is designed to reflect whether the pattern is very general or very specific: for example the pattern<br/><span><img src="/files/04/27/65/f042765/public/ll.gif" />subsection/title<br/><img src="/files/04/27/65/f042765/public/gg.gif" /></span>(which matches any<br/><span><title><br/></span>element whose parent is a<br/><span><subsection><br/></span>element) gets higher priority than the pattern<br/><span><img src="/files/04/27/65/f042765/public/ll.gif" />*<br/><img src="/files/04/27/65/f042765/public/gg.gif" /></span>, which matches any element. System-allocated priorities are always in the range −0.5 to +0.5: user-allocated priorities will normally be 1 or more, but there are no restrictions. For more details see the description of the<br/><span><xsl:template><br/></span>element in Chapter 6, page 483.<br/></li><li>Finally, if there is more than one rule with the same import precedence and priority, the XSLT processor has a choice: it can either report an error, or choose whichever rule appears last in the stylesheet (some processors do both: they give you a warning, and then carry on processing). Different processors will behave differently in this situation, which gives you a slight portability problem to watch out for: it is best to ensure this ambiguity never happens, which you can achieve by setting explicit priorities on your template rules.<br/></li></ul></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/32-page" data-page="31">«</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/15-page" data-page="14">15</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/28-page" data-page="27">28</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/29-page" data-page="28">29</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/30-page" data-page="29">30</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/31-page" data-page="30">31</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/32-page" data-page="31">32</a></li> <li class="active"><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/33-page" data-page="32">33</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/34-page" data-page="33">34</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/35-page" data-page="34">35</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/36-page" data-page="35">36</a></li> <li><a href="/pdf-novels/xslt-20-and-xpath-20-programmers-reference-4th-edition-by-michael-kay-free/37-page" data-page="36">37</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/469-page" data-page="468">469</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/34-page" data-page="33">»</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/the-crystal-bridge-the-lost-shards-book-1-by-pulsipher-charlie-free">The Crystal Bridge (The Lost Shards Book 1)</a> by <span>Pulsipher, Charlie</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/the-sweetness-of-forgetting-by-kristin-harmel-free">The Sweetness of Forgetting</a> by <span>Kristin Harmel</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/the-astral-by-kate-christensen-free">The Astral</a> by <span>Kate Christensen</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/the-grand-hotel-by-gregory-day-free">The Grand Hotel</a> by <span>Gregory Day</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/the-lace-reader-by-brunonia-barry-free">The Lace Reader</a> by <span>Brunonia Barry</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/how-to-find-and-download-free-ebooks-survival-guide-by-toly-k-free">How to Find and Download Free eBooks Survival Guide</a> by <span>Toly K</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/the-waltzing-widowsmith-by-joan-smith-free">The Waltzing Widow/Smith</a> by <span>Joan Smith</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/blood-hunt-141362-by-christopher-buecheler-free">Blood Hunt</a> by <span>Christopher Buecheler</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/down-into-darkness-by-david-lawrence-free">Down into Darkness</a> by <span>David Lawrence</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/eagle-kathleen-by-what-the-heart-knows-free">Eagle, Kathleen</a> by <span>What the Heart Knows</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 China Edition 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.100vampirenovels.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>