0

私はxmlとxsltで作業しています。私は次のxmlを持っています

<book>
  <book-part book-part-type="chapter" book-part-number="1" id="PT-161_ch_1">
 <book-meta>
 <book-title-group>
        <book-title>Software&#x002d;Hardware Integration in Automotive Product Development</book-title>
      </book-title-group>
    </book-meta>
    <book-part-meta>
     <title-group>
    <title>
      <bold>2008-21-0043</bold>
      </title>
      </title-group>
     </book-part-meta>
<body>
   <sec id="ch1.1">
    <title>INTRODUCTION</title>
    <p>The trends of increased functionality, improved performance, reduced size and increased complexity continue to evolve in the automotive electronics market. New system architectures are providing the performance and memory capability necessary to keep up with the hardware performance and software growth required by the automotive market trends. All of this technology growth implies a higher product cost and increased engineering effort required to develop these new products.</p>
   </sec>
</body>

私は次のXSLTを持っています

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN"/>

<xsl:template match="book-part">

<html>
  <head>

  </head>
  <body>
    <xsl:for-each select="book-meta">
      <p>
        <b>
          <xsl:value-of select="book-title-group/book-title"/>
        </b>
      </p>
    </xsl:for-each>
    <xsl:for-each select="book-part-meta">
      <p>
        <b>
          <xsl:value-of select="title-group/title"/>
        </b>
      </p>
    </xsl:for-each>
    <xsl:for-each select="body/sec">
      <p>
        <ol>
          <li>
        <b>
          <div>
          <xsl:value-of select="title"/>
          </div>
        </b>
          </li>
        </ol>
        <xsl:for-each select="p">
          <xsl:value-of select="text()"/>
        </xsl:for-each>
      </p>
      <xsl:for-each select="sec">
        <p>
          <ol>
            <li>
              <b>
                <div>
            <xsl:value-of select="title"/>
                </div>
              </b>
            </li>
          </ol>
          <xsl:value-of select="p"/>
        </p>
      </xsl:for-each>
    </xsl:for-each>
    </body>
    </html>
  </xsl:template>
  <xsl:template match="text()[parent::xref]"/>
</xsl:stylesheet>

この XML を EPub に変換する必要があります。Epub に変換するには、まず XSLCompiledTransform を使用して html に変換し、次に html を xhtml に変換してから、Spire.doc を使用して、この xhtml を Epub に変換しています。

しかし、xhtml を Epub Spire.doc に変換すると、次のエラーが発生します。

名前空間 ' http://www.w3.org/1999/xhtml 'の要素 'body' には、テキストを含めることはできません。予想される可能な要素のリスト: ' http://www.w3.org/1999/xhtml:p h1 h2 h3 h4 h5 h6 div ul ol dl pre hr blockquote...

「text()」を解析するために xslt で行う必要がある変更を正確に取得できません。

4

1 に答える 1

0

あなたのスタイルシートは無効な XHTML を生成したと思います。そのため、処理の第 2 フェーズ (XHTML から Epub への変換) でそれが拒否されています。この問題を特定するための最初の段階は、生成した XHTML を確認することです。

スキーマ対応の XSLT を使用すると、デバッグがはるかに簡単になります。生成される XHTML 出力を検証することができ、運が良ければ、問題のあるコンテンツを生成するスタイルシート内の場所がわかります。

于 2014-01-30T10:20:07.393 に答える