2

ブラウザーに送信される XML ファイルが 1 つだけになるように、XSL を XML に埋め込むソリューションを探しています。ここで Dimitre Novatchev によって提案されたソリューションを試しました: Embed xsl into an XML file

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes"/>    <xsl:variable name="vEmbDoc">
    <doc>
        <head></head>
        <body>
            <para id="foo">Hello I am foo</para>
        </body>
    </doc>
</xsl:variable>
<xsl:template match="para">
  <h1><xsl:value-of select="."/></h1>
</xsl:template>
<xsl:template match="xsl:template"/></xsl:stylesheet>

問題は、このソリューションでは、頭の中にスタイル要素を含める方法が見つからないことです。提案されたソリューションのように見えます head タグと body タグは、解析中にブラウザーが自動的に追加し、これらのタグが含まれていなくてもソリューションが機能するため、効果がありません。

問題は次のとおりです。上記のソリューションのヘッドにスタイル要素を含める方法は次のようになります。

<head><style>body {font-size:10pt;padding:20pt} </style></head>
4

1 に答える 1

1

この XML ドキュメント:

<?xml-stylesheet type="text/xsl" href="myEmbedded.xml"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 exclude-result-prefixes="xsl">
 <xsl:output omit-xml-declaration="yes"/>
    <xsl:variable name="vEmbDoc">
        <doc>
            <head>
              <style>body {font-size:10pt;padding:20pt}</style>
              </head>
            <body>
                <para id="foo">Hello I am foo</para>
            </body>
        </doc>
    </xsl:variable>
    <xsl:template match="para">
      <h1><xsl:value-of select="."/></h1>
    </xsl:template>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="doc">
  <html>
   <xsl:apply-templates/>
  </html>
 </xsl:template>

    <xsl:template match="xsl:template"/>

    <xsl:template match="xsl:*">
      <xsl:apply-templates/>
    </xsl:template>
</xsl:stylesheet>

XSLT スタイルシートが含まれています。開始 PI は、このスタイルシートを自分自身に適用するようブラウザに指示します

このように指定された変換により、必要な結果が生成されます

    <html>

   <head xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

              <style>body {font-size:10pt;padding:20pt}</style>
              </head>

   <body xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <h1>Hello I am foo</h1>

   </body>

</html>
于 2013-02-28T05:38:13.120 に答える