Skip to content

Instantly share code, notes, and snippets.

@michaelcox
Created February 14, 2011 20:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelcox/826496 to your computer and use it in GitHub Desktop.
Save michaelcox/826496 to your computer and use it in GitHub Desktop.
XSL Template for saving Frequently Asked Questions as XML, and outputting to HTML.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes" />
<xsl:template match="/faq_page">
<xsl:if test="count(//question) &gt; 5">
<xsl:for-each select="category">
<xsl:if test="count(//category) &gt; 1">
<h3>
<xsl:value-of select="@name" />
</h3>
</xsl:if>
<ol class="questions">
<xsl:for-each select="faq">
<li>
<a href="#{generate-id(question)}">
<xsl:value-of select="question" disable-output-escaping="yes"/>
</a>
</li>
</xsl:for-each>
</ol>
</xsl:for-each>
</xsl:if>
<p>
<br/>
</p>
<xsl:for-each select="category">
<xsl:if test="count(//category) &gt; 1">
<h3>
<xsl:value-of select="@name"/>
</h3>
</xsl:if>
<ol class="answers">
<xsl:for-each select="faq">
<li>
<a name="{generate-id(question)}">
<strong>
<xsl:value-of select="question" disable-output-escaping="yes"/>
</strong>
</a>
<br/>
<p>
<xsl:value-of select="answer" disable-output-escaping="yes" />
</p>
</li>
</xsl:for-each>
</ol>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="utf-8" ?>
<faq_page>
<category name="Category 1">
<faq>
<question>First Question</question>
<answer>
<![CDATA[
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer iaculis vehicula urna quis blandit. Etiam sollicitudin posuere convallis. Nunc sit amet eros nisi. Donec interdum dolor massa. Quisque pellentesque ultrices nisi, in placerat elit tincidunt eu. Sed id risus mauris. Curabitur iaculis erat accumsan lorem suscipit auctor. Aenean nec mauris vel justo vehicula tempus vitae vitae ante. In suscipit tortor et justo fermentum sit amet volutpat sem suscipit. Nam malesuada tincidunt lectus.</p>
<p>Sed a orci ut ligula tincidunt congue ut ut nulla. Duis nulla risus, sagittis id convallis convallis, convallis ut nibh. Quisque nisi quam, lacinia in ornare id, tristique tincidunt eros. In massa libero, placerat quis bibendum in, commodo nec nisi. Aliquam pellentesque sapien in massa malesuada quis elementum felis euismod. Curabitur accumsan, metus eget tristique venenatis, nisl purus ultricies est, ut faucibus tortor tellus sit amet purus. In vel nulla ac neque luctus rutrum ac id urna. Fusce eu sem sit amet nisl pulvinar molestie. Curabitur pellentesque libero faucibus nibh lobortis nec ultricies justo pulvinar. Praesent lacinia posuere ornare. Duis non scelerisque nunc. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur euismod pellentesque risus, quis sollicitudin diam lacinia et. Nullam sed erat eu velit suscipit tristique. Integer ac leo ac velit venenatis pulvinar et a eros. Nam sed lectus fermentum risus consequat aliquam eget nec velit. Etiam nec ultrices ipsum.</p>
]]>
</answer>
</faq>
<faq>
<question>Second question</question>
<answer>Answer to the second question (this one smaller)</answer>
</faq>
</category>
<category name="Category 2">
<faq>
<question>First Question</question>
<answer>First Answer
</answer>
</faq>
<faq>
<question>Second question</question>
<answer>Second answer</answer>
</faq>
</category>
</faq_page>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment