Re: Nested Bulleted Lists Problem
Thanks, Tom! Sent from my iPhone On Apr 6, 2014, at 2:02 PM, Tom Morrison [via Apache FOP] ml-node+s1065347n40450...@n5.nabble.com wrote: Feel free to post XSLT questions here: http://www.tek-tips.com/threadminder.cfm?pid=426 I will do my best to answer them in that forum, as I have been doing for years. Best regards, Tom Morrison From: Glenn Adams [mailto:[hidden email]] [snip] in the future, it would be better to pursue XSLT questions on MLs that focus on XSLT functionality If you reply to this email, your message will be added to the discussion below: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436p40450.html To unsubscribe from Nested Bulleted Lists Problem, click here. NAML -- View this message in context: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436p40451.html Sent from the FOP - Users mailing list archive at Nabble.com.
Re: Nested Bulleted Lists Problem
Just occurs to me your starting point is HTML so your mileage will definitely vary. Sorry. Sent from my iPhone On Apr 5, 2014, at 9:05 AM, Rob Sargent rsarg...@xmission.com wrote: If you don't switch over to the style sheet Manuel points us to, then might try something like below which gets include in the actual style sheet ( xsl:include href=common/bullets.xsl/). Couple of notes: the ElementConversion is noise your test will be xsl:when test=name(../../..) = 'li' choose you own actual bullet character, hopefully you're using a modern, complete font As I said earlier, they're rendered in a single list, as seen in the calls at the bottom. Luckily I know there are only four levels. If you don't have that knowledge you might have to recurse. In xsl. Oh what fun. ?xml version=1.0 encoding=UTF-8? xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform; xmlns:ec=xalan://com.employer.utilities.ElementConversion xmlns:fo=http://www.w3.org/1999/XSL/Format; xmlns:xalan=http://xml.apache.org/xslt; xsl:param name=bulletOffset12.3pt/xsl:param xsl:param name=bulletOffset210pt/xsl:param xsl:param name=bulletOffset317pt/xsl:param xsl:param name=bulletOffset425pt/xsl:param xsl:param name=bulletChar1•/xsl:param xsl:param name=bulletChar2◦/xsl:param xsl:param name=bulletChar3▪/xsl:param xsl:param name=bulletChar4–/xsl:param xsl:template match=bullet !-- we are forced to deduce the indentation level because the editor can shift bullet text blocks up and down which would (mostly) break if each bullet knew it's indent level -- xsl:choose xsl:when test=name(../../..) = 'bullet' xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset4/ xsl:with-param name=bullet-char select=$bulletChar4/ /xsl:call-template /xsl:when xsl:when test=name(../..) = 'bullet' xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset3/ xsl:with-param name=bullet-char select=$bulletChar3/ /xsl:call-template /xsl:when xsl:when test=name(..) = 'bullet' xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset2/ xsl:with-param name=bullet-char select=$bulletChar2/ /xsl:call-template /xsl:when xsl:otherwise xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset1/ xsl:with-param name=bullet-char select=$bulletChar1/ /xsl:call-template /xsl:otherwise /xsl:choose !-- decend through the bullets -- xsl:apply-templates select=*/ /xsl:template xsl:template name=render-bullet xsl:param name=bullet-offset/ xsl:param name=bullet-char/ fo:list-item margin-left={$bullet-offset} fo:list-item-label end-indent=label-end() fo:block font-family=ITCStoneSerifCom-Medium font-weight=normal font-style=normal xsl:value-of select=$bullet-char/ /fo:block /fo:list-item-label xsl:call-template name=bullet-text/ /fo:list-item /xsl:template xsl:template name=bullet-text fo:list-item-body start-indent=body-start() fo:block line-stacking-strategy=font-height !-- keep-together.within-column=always -- xsl:call-template name=excluded-text-highlight/ !-- is there really an option here -- xsl:value-of select=text()/ /fo:block /fo:list-item-body /xsl:template /xsl:stylesheet And here is the call. This particular caller only goes down 3. xsl:template match=ddx xsl:if test=count(*) != 0 fo:list-block font-family=ITCStoneSerifCom-Medium font-size=9pt provisional-distance-between-starts=8.0pt provisional-label-separation=0.1pt xsl:for-each select=* xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset1/ xsl:with-param name=bullet-char select=$bulletChar1/ /xsl:call-template xsl:for-each select=bullet xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset2/ xsl:with-param name=bullet-char select=$bulletChar2/ /xsl:call-template xsl:for-each select=bullet xsl:call-template name=render-bullet xsl:with-param name=bullet-offset select=$bulletOffset3/ xsl:with-param name=bullet-char select=$bulletChar3/ /xsl:call-template /xsl:for-each /xsl:for-each /xsl:for-each /fo:list-block /xsl:if /xsl:template On 04/04/2014 09:36 PM, Manuel Mall wrote: On 4/4/2014 8:25 PM, a3leggeddog wrote: Hi Terence - Thank you for your quick response! I thought I tried that as well, but I will give it another shot. Do you have an XSL template that will produce the correct XML-FO from HTML for nested lists? Thanks, Seth Do a Google search for 'HTML 2 FO' or similar and you'll find a number of solutions. For example Antenna House publishes a free HTML to FO conversion stylesheet, i.e. on http://www.antennahouse.com/XSLsample/XSLsample.htm you see a link to http://www.antennahouse.com/XSLsample/sample-xsl-xhtml2fo/xhtml2fo.xsl half way down the page in the section titled Stylesheet for XHTML to XSL-FO transformation.
Re: Nested Bulleted Lists Problem
First of all, let me just say that this mailing list is awesome! I can't thank you all enough for all of your help - I really appreciate it. Yes, sadly I'm going from HTML and, worse, I'm going from HTML that I can't control. In fact, this particular issue is the result of HTML produced by an HTML control: ckEditor. I have a lot to go on here, and I'm continuing to mess with the XSLT. If I can get it to work, I'll reposted here so, hopefully, someone else can benefit. I will also reach out to ckSource because I don't believe what they're producing is valid HTML either. Best, Seth -- View this message in context: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436p40448.html Sent from the FOP - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
the folks on this ML may be awesome, but keep in mind that the content of your thread has little to do with FOP and mostly to do with XSLT; although FOP provides a convenience function for ingesting XML along with an XSLT stylesheet, that isn't the primary function of FOP, which is formatting XSL-FO content; in the future, it would be better to pursue XSLT questions on MLs that focus on XSLT functionality On Sat, Apr 5, 2014 at 1:09 PM, a3leggeddog s...@3ldinc.com wrote: First of all, let me just say that this mailing list is awesome! I can't thank you all enough for all of your help - I really appreciate it. Yes, sadly I'm going from HTML and, worse, I'm going from HTML that I can't control. In fact, this particular issue is the result of HTML produced by an HTML control: ckEditor. I have a lot to go on here, and I'm continuing to mess with the XSLT. If I can get it to work, I'll reposted here so, hopefully, someone else can benefit. I will also reach out to ckSource because I don't believe what they're producing is valid HTML either. Best, Seth -- View this message in context: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436p40448.html Sent from the FOP - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
Think of it as one list, with various indents and bullet-types according to the nestedness of your input. I have examples (at home) if you need them - to four bullet levels On 04/04/2014 06:49 PM, a3leggeddog wrote: Hello - I am trying to convert a nested, bulleted list in HTML to XML-FO for output as a PDF in Apache FOP. The HTML looks like this ul liItem Number1/li ul liSub-Item 1/li liSub-Item 2/li /ul /ul All of the XSLT I have tried creates a with an embedded for the subitems. FOP, however, complains that you can't have a list-block as a child of a list-block. Is this an issue with FOP? Or, is that simply not valid XML-FO and all of the XSLT examples are processing this construct incorrectly? If it's the later, what is the proper XML-FO to produce a nested set of bullets like you would see in HTML? Any help would be greatly appreciated! Thanks! -- View this message in context: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436.html Sent from the FOP - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
On 4/4/2014 7:49 PM, a3leggeddog wrote: Hello - I am trying to convert a nested, bulleted list in HTML to XML-FO for output as a PDF in Apache FOP. The HTML looks like this ul liItem Number1/li ul liSub-Item 1/li liSub-Item 2/li /ul /ul All of the XSLT I have tried creates a with an embedded for the subitems. FOP, however, complains that you can't have a list-block as a child of a list-block. Is this an issue with FOP? Or, is that simply not valid XML-FO and all of the XSLT examples are processing this construct incorrectly? If it's the later, what is the proper XML-FO to produce a nested set of bullets like you would see in HTML? Any help would be greatly appreciated! Thanks! Hi- I'm not sure this would resolve the issue you're facing but I've successfully nested fo:list-block elements by placing the child fo:list-block inside the fo:list-item-body element of the parent fo:list-block. Hope that helps. -Terence Bandoian - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
On 4/4/2014 8:06 PM, Terence M. Bandoian wrote: On 4/4/2014 7:49 PM, a3leggeddog wrote: Hello - I am trying to convert a nested, bulleted list in HTML to XML-FO for output as a PDF in Apache FOP. The HTML looks like this ul liItem Number1/li ul liSub-Item 1/li liSub-Item 2/li /ul /ul All of the XSLT I have tried creates a with an embedded for the subitems. FOP, however, complains that you can't have a list-block as a child of a list-block. Is this an issue with FOP? Or, is that simply not valid XML-FO and all of the XSLT examples are processing this construct incorrectly? If it's the later, what is the proper XML-FO to produce a nested set of bullets like you would see in HTML? Any help would be greatly appreciated! Thanks! Hi- I'm not sure this would resolve the issue you're facing but I've successfully nested fo:list-block elements by placing the child fo:list-block inside the fo:list-item-body element of the parent fo:list-block. Hope that helps. -Terence Bandoian Actually, that should say inside the fo:list-item-body of an fo:list-item in the parent fo:list-block. -Terence Bandoian - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
Thanks for the quick response! Yes, if you have examples, that would be great. You wouldn't happen to have an XSLT example? The one I have produces XML-FO that looks like this: fo:list-block space-before=1em space-after=1em role=html:ul fo:list-item relative-align=baseline provisional-distance-between-starts=0.3cm provisional-label-separation=0.3cm role=html:lifo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrapfo:blockfo:inline font=1em serif•/fo:inline/fo:block/fo:list-item-labelfo:list-item-body start-indent=body-start() text-indent=0fo:blockItem Number1/fo:block/fo:list-item-body/fo:list-item fo:list-block space-before=1em space-after=1em role=html:ul fo:list-item relative-align=baseline provisional-distance-between-starts=0.3cm provisional-label-separation=0.3cm role=html:lifo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrapfo:blockfo:inline font=0.67em monospace baseline-shift=0.25emo/fo:inline/fo:block/fo:list-item-labelfo:list-item-body start-indent=body-start() text-indent=0fo:blockSub-Item 1/fo:block/fo:list-item-body/fo:list-item fo:list-item relative-align=baseline provisional-distance-between-starts=0.3cm provisional-label-separation=0.3cm role=html:lifo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrapfo:blockfo:inline font=0.67em monospace baseline-shift=0.25emo/fo:inline/fo:block/fo:list-item-labelfo:list-item-body start-indent=body-start() text-indent=0fo:blockSub-Item 2/fo:block/fo:list-item-body/fo:list-item /fo:list-block /fo:list-block The XSL looks like this: xsl:template match=html:ul fo:list-block xsl:use-attribute-sets=ul xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:li//html:ul fo:list-block xsl:use-attribute-sets=ul-nested xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:ol fo:list-block xsl:use-attribute-sets=ol xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:li//html:ol fo:list-block xsl:use-attribute-sets=ol-nested xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:ul/html:li fo:list-item xsl:use-attribute-sets=ul-li xsl:call-template name=process-ul-li/ /fo:list-item /xsl:template xsl:template name=process-ul-li xsl:call-template name=process-common-attributes/ fo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrap fo:block xsl:variable name=depth select=count(ancestor::html:ul)/ xsl:choose xsl:when test=$depth = 1 fo:inline xsl:use-attribute-sets=ul-label-1 xsl:value-of select=$ul-label-1/ /fo:inline /xsl:when xsl:when test=$depth = 2 fo:inline xsl:use-attribute-sets=ul-label-2 xsl:value-of select=$ul-label-2/ /fo:inline /xsl:when xsl:otherwise fo:inline xsl:use-attribute-sets=ul-label-3 xsl:value-of select=$ul-label-3/ /fo:inline /xsl:otherwise /xsl:choose /fo:block /fo:list-item-label fo:list-item-body start-indent=body-start() text-indent=0 fo:block xsl:apply-templates/ /fo:block /fo:list-item-body /xsl:template It was seemingly designed for nested lists, so I'm not sure if it's just an issue with FOP. Best, Seth -- View this message in context: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436p40440.html Sent from the FOP - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
Hi Terence - Thank you for your quick response! I thought I tried that as well, but I will give it another shot. Do you have an XSL template that will produce the correct XML-FO from HTML for nested lists? Thanks, Seth -- View this message in context: http://apache-fop.1065347.n5.nabble.com/Nested-Bulleted-Lists-Problem-tp40436p40441.html Sent from the FOP - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
On 4/4/2014 8:21 PM, a3leggeddog wrote: Thanks for the quick response! Yes, if you have examples, that would be great. You wouldn't happen to have an XSLT example? The one I have produces XML-FO that looks like this: fo:list-block space-before=1em space-after=1em role=html:ul fo:list-item relative-align=baseline provisional-distance-between-starts=0.3cm provisional-label-separation=0.3cm role=html:lifo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrapfo:blockfo:inline font=1em serif•/fo:inline/fo:block/fo:list-item-labelfo:list-item-body start-indent=body-start() text-indent=0fo:blockItem Number1/fo:block/fo:list-item-body/fo:list-item fo:list-block space-before=1em space-after=1em role=html:ul fo:list-item relative-align=baseline provisional-distance-between-starts=0.3cm provisional-label-separation=0.3cm role=html:lifo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrapfo:blockfo:inline font=0.67em monospace baseline-shift=0.25emo/fo:inline/fo:block/fo:list-item-labelfo:list-item-body start-indent=body-start() text-indent=0fo:blockSub-Item 1/fo:block/fo:list-item-body/fo:list-item fo:list-item relative-align=baseline provisional-distance-between-starts=0.3cm provisional-label-separation=0.3cm role=html:lifo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrapfo:blockfo:inline font=0.67em monospace baseline-shift=0.25emo/fo:inline/fo:block/fo:list-item-labelfo:list-item-body start-indent=body-start() text-indent=0fo:blockSub-Item 2/fo:block/fo:list-item-body/fo:list-item /fo:list-block /fo:list-block The XSL looks like this: xsl:template match=html:ul fo:list-block xsl:use-attribute-sets=ul xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:li//html:ul fo:list-block xsl:use-attribute-sets=ul-nested xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:ol fo:list-block xsl:use-attribute-sets=ol xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:li//html:ol fo:list-block xsl:use-attribute-sets=ol-nested xsl:call-template name=process-common-attributes-and-children/ /fo:list-block /xsl:template xsl:template match=html:ul/html:li fo:list-item xsl:use-attribute-sets=ul-li xsl:call-template name=process-ul-li/ /fo:list-item /xsl:template xsl:template name=process-ul-li xsl:call-template name=process-common-attributes/ fo:list-item-label end-indent=label-end() text-align=end wrap-option=no-wrap fo:block xsl:variable name=depth select=count(ancestor::html:ul)/ xsl:choose xsl:when test=$depth = 1 fo:inline xsl:use-attribute-sets=ul-label-1 xsl:value-of select=$ul-label-1/ /fo:inline /xsl:when xsl:when test=$depth = 2 fo:inline xsl:use-attribute-sets=ul-label-2 xsl:value-of select=$ul-label-2/ /fo:inline /xsl:when xsl:otherwise fo:inline xsl:use-attribute-sets=ul-label-3 xsl:value-of select=$ul-label-3/ /fo:inline /xsl:otherwise /xsl:choose /fo:block /fo:list-item-label fo:list-item-body start-indent=body-start() text-indent=0 fo:block xsl:apply-templates/ /fo:block /fo:list-item-body /xsl:template It was seemingly designed for nested lists, so I'm not sure if it's just an issue with FOP. Best, Seth Hi, Seth- It looks like nesting is the problem. In the output above, the inner fo:list-block is a direct descendant of the outer fo:list-block. I'd try moving it to within the fo:list-item-body of the immediately preceding fo:list-item. -Terence Bandoian - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Nested Bulleted Lists Problem
On 4/4/2014 8:25 PM, a3leggeddog wrote: Hi Terence - Thank you for your quick response! I thought I tried that as well, but I will give it another shot. Do you have an XSL template that will produce the correct XML-FO from HTML for nested lists? Thanks, Seth Hi, Seth- Sorry, I don't. Sounds like Rob might though. -Terence Bandoian - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
RE: Nested Bulleted Lists Problem
On 4/4/2014 8:25 PM, a3leggeddog wrote: Hi Terence - Thank you for your quick response! I thought I tried that as well, but I will give it another shot. Do you have an XSL template that will produce the correct XML-FO from HTML for nested lists? Thanks, Seth Do a Google search for 'HTML 2 FO' or similar and you'll find a number of solutions. For example Antenna House publishes a free HTML to FO conversion stylesheet, i.e. on http://www.antennahouse.com/XSLsample/XSLsample.htm you see a link to http://www.antennahouse.com/XSLsample/sample-xsl-xhtml2fo/xhtml2fo.xsl half way down the page in the section titled Stylesheet for XHTML to XSL-FO transformation. Manuel - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org