2

プログラムを実行しようとすると「Failed to compile stlyesheet」というエラーが表示される理由がわかりません。スタイルシートのエラーだと思いますが、見つからないようです。

私はおそらくそれを見ているだけですが、どんな助けでも大歓迎です。

ありがとうございました!xsl は以下にあります。


 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0">
  <xsl:output method="xml" indent="yes"/> 
   <xsl:template match="/"> 
 <PhoneBook> 
  <xsl:apply-templates/>
 </PhoneBook>
  </xsl:template>
<xsl:template match="AddressEntry">
<Entry>
  <xsl:apply-templates select="Name"/> 
  <xsl:apply-templates select="Address"/> 
</Entry>
</xsl:template>
<xsl:template match="Name">
<Name>
<xsl:apply-templates select="LastName"/>, 
<xsl:apply-templates select="FirstName"/> 
</Name>
</xsl:template>
 <xsl:template match="Address">
<LocatorInfo>
  <xsl:apply-templates select="PostalAddress/Street"/> 
  <xsl:apply-templates select="PostalAddress/City"/> 
 <xsl:apply-templates select="PostalAddress/PostalCode"/>
 <xsl:apply-templates select="Phone"/>
 </LocatorInfo>
 </xsl:template>
<xsl:template match="FirstName"> 
<xsl:value-of select="."/>
<xsl:value-of select="."/> 
</xsl:template>
 <xsl:template match="LastName">
<xsl:value-of select="."/>
</xsl:template>
 </xsl:stylesheet>
4

3 に答える 3

12

versionタグで 2 回指定していますxsl:stylesheet。これを修正すると、コンパイルできるようになります。


補足として、XSL をコンパイルまたは検証するプログラムがない場合は、次のコマンドを使用して Java でいつでも実行できます。

java com.sun.org.apache.xalan.internal.xsltc.cmdline.Compile test.xsl

XSL をコンパイルし、その時点で構文エラーを表示しようとします。適切なツールがない場合、このようなトラブルシューティングに最適です。

于 2013-02-08T16:51:44.977 に答える
5

スタイルシートが無効である理由は説明されましたが、より深い問題に対処する必要があります。なぜエラー メッセージが表示されなかったのでしょうか?

あなたが Saxon を使用しているかどうかはわかりませんが、症状から、Saxon を使用している可能性が示唆されます。Java または .NET アプリケーション内からスタイルシートをコンパイルしようとすると、デフォルトでコンパイル エラー メッセージが System.err 出力ストリームに書き込まれます。多くのコンテキストでは、たとえば Web サーバーやデスクトップ GUI 内で実行されるアプリケーションでは、 System.err の内容が画面に表示されない場合があるため、出力を見つけることができる場所に出力することが重要です ( Web アプリケーションの場合、少なくとも開発中は、エラー メッセージを HTML 応答ページに書き込むことがよくあります)。API にはこれを実現するためのさまざまなメカニズムがあります。たとえば、独自の ErrorListener を作成します。詳細は、使用している API によって異なります。

または、目的のために設計された oXygen や Stylus Studio などの開発環境を使用して、スタイルシートを開発およびデバッグします。

于 2013-02-08T20:17:10.157 に答える
2

「xsl:stylesheet」要素に 2 つの「version」属性があるため、コンパイルされていません。その結果、不適切な形式の (非 XML) ドキュメントが作成されます。

XML では、要素ノードに同じ名前の 2 つの属性ノードを含めることはできません。

于 2013-02-08T16:54:26.547 に答える