]> granicus.if.org Git - docbook-dsssl/commitdiff
Make w2docbook escape markup in fragments
authorNorman Walsh <ndw@nwalsh.com>
Tue, 6 May 2003 15:23:58 +0000 (15:23 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Tue, 6 May 2003 15:23:58 +0000 (15:23 +0000)
litprog/weave.xweb

index 3dd5ce9a697b6bd3bac6a4f85fd7559fcb14ce11..2091d7d2f42179fc5c2e4ef66af495bacb8b50d9 100644 (file)
@@ -1156,13 +1156,47 @@ aren't copied.
   </xsl:template>
 
   <xsl:template match="src:fragment" priority="2">
-    <programlisting id="@id">
-      <xsl:apply-templates/>
+    <programlisting id="{@id}">
+      <xsl:apply-templates mode="escaped"/>
     </programlisting>
   </xsl:template>
 
   <xsl:template match="src:fragref" priority="2">
-    <xref linkend="@linkend"/>
+    <xref linkend="{@linkend}"/>
+  </xsl:template>
+
+  <xsl:template match="*" mode="escaped">
+    <xsl:text>&lt;</xsl:text>
+    <xsl:value-of select="name(.)"/>
+    <xsl:for-each select="@*">
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="name(.)"/>
+      <xsl:text>="</xsl:text>
+      <xsl:value-of select="."/>
+      <xsl:text>"</xsl:text>
+    </xsl:for-each>
+    <xsl:text>&gt;</xsl:text>
+    <xsl:apply-templates mode="escaped"/>
+    <xsl:text>&lt;/</xsl:text>
+    <xsl:value-of select="name(.)"/>
+    <xsl:text>&gt;</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="comment()" mode="escaped">
+    <xsl:text>&lt;!--</xsl:text>
+    <xsl:value-of select="."/>
+    <xsl:text>--&gt;</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="processing-instruction()" mode="escaped">
+    <xsl:text>&lt;?</xsl:text>
+    <xsl:value-of select="name(.)"/>
+    <xsl:value-of select="."/>
+    <xsl:text>?&gt;</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="text()" mode="escaped">
+    <xsl:copy/>
   </xsl:template>
 </xsl:stylesheet>
 </src:fragment>