xsl-list
[Top] [All Lists]

Re: [xsl] Move elements to preceding parent

2009-06-18 16:16:50
At 2009-06-18 21:15 +0300, you wrote:
I tried to test the stylesheet with non-<p> elements inside body and I
see they break the paragraph.

Indeed they do ... your original specification implied paragraphs were adjacent.

Input Example:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<body>
  <p dir="rtl">
     <span class="chapter">line1</span>
  </p>
 <p dir="rtl"><span class="regular">line10</span>
 <span class="regular">line11</span>
 </p>
 <p dir="rtl"><span class="regular">line12</span>
 </p>
<p dir="rtl"><span class="regular">line13.</span>
</p>
<p dir="rtl"><span class="regular">line14</span>
</p>
<p dir="rtl"><span class="regular">line15</span>
</p>
<h5>
<img src="images/test.jpg" width="35.00" height="30.00" alt="images.jpg" />

</h5>
<p dir="rtl"><span class="regular">line16.</span>
</p>
<p dir="rtl"><span class="regular">line17"</span>
</p>

</body>
</html>

Output:
<?xml version="1.0" encoding="UTF-8"?><html
xmlns="http://www.w3.org/1999/xhtml";>
   <body>
      <p dir="rtl">
         <span class="chapter">line1</span>

      </p>
      <p dir="rtl"><span class="regular">line10</span>
         <span class="regular">line11</span>
         <span class="regular">line12</span>
         <span class="regular">line13.</span>

      </p>
      <p dir="rtl"><span class="regular">line14</span>

      </p>
      <p dir="rtl"><span class="regular">line15</span>

      </p>
      <h5>
         <img src="images/test.jpg" width="35.00" height="30.00"
alt="images.jpg" />


      </h5>
      <p dir="rtl"><span class="regular">line16.</span>

      </p>
      <p dir="rtl"><span class="regular">line17"</span>

      </p>
   </body>
</html>

I thought the <h5> element should be grouped as a seperate group
because of the condition group-ending-with="*[not(self::p)] ...

No, because group-ending-with= and group-starting-with= work on consecutive members of the population.

What should I change so the output will be:
<?xml version="1.0" encoding="UTF-8"?><html
xmlns="http://www.w3.org/1999/xhtml";>
   <body>
      <p dir="rtl">
         <span class="chapter">line1</span>

      </p>
      <p dir="rtl"><span class="regular">line10</span>
         <span class="regular">line11</span>
         <span class="regular">line12</span>
         <span class="regular">line13.</span>

      </p>
      <p dir="rtl"><span class="regular">line14</span>

                <span class="regular">line15</span>
                <span class="regular">line16.</span>
      </p>
      <h5>
         <img src="images/test.jpg" width="35.00" height="30.00"
alt="images.jpg" />


      </h5>

      <p dir="rtl"><span class="regular">line17"</span>

      </p>
   </body>
</html>

I wouldn't want to try until I better understood the specification. Your need now breaks my top-down perspective of the content. Up until now all output information was in input order, and you are now asking for an arbitrary re-ordering of non-<p> elements with the <p> elements. Your image is being moved after "line 16" rather than the original order of being after "line 15".

Perhaps Martin can exploit his axis-based approach to meet this new requirement.

Nothing comes immediately to mind for my approach within the bounds of a voluntary effort. I'll post something if I think of it.

Meanwhile, if you can provide more detail about your complete needs, that will help everyone interested in assisting you.

. . . . . . . . . . . Ken

--
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/m/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/m/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--