2012-04-03 15 views
0

私は、VS2010で比較的単純なXMLファイルを変換するXMLスタイルシートを開発しました。 VSでXSLTデバッグを実行すると、期待される出力が新しいウィンドウにレンダリングされます。ブラウザ内XML変換が機能しない

だから私は、その後、ソースXMLにXSLTファイルへのリンクを追加しました:

<?xml-stylesheet type="text/xsl" href="ABC.xslt"?> 

を、私は、ブラウザでこのファイルを表示する場合しかし、私は変換結果を得ることはありません。 IE9、Firefox、Chrome

XSLT(おそらく変更された形式)は、最終的なXMLを生成するために第三者によって使用されるため、必須ではありませんが、出力outデータベース(開始XMLを生成する)から、一度変換されると、最終的なXMLのように見えます。

XML例:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="abc.xslt"?> 
<afterTreatmentSystemRequest> 
    <afterTreatmentSystem> 
     <ID>93073010005597</ID> 
     <shipmentDate>20120330</shipmentDate> 
     <technicalApprovalDate>20120330</technicalApprovalDate> 
    </afterTreatmentSystem> 
    <executionSettingsDate>2012-03-30T14:17:26</executionSettingsDate> 
</afterTreatmentSystemRequest> 

XSLT:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/afterTreatmentSystemRequest"> 
      <nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai"> 
       <requestHeader userId="d2vswen"/> 
       <xsl:apply-templates select="afterTreatmentSystem" /> 
       <xsl:apply-templates select="executionSettingsDate" /> 
      </nsmajorassemblyai:storeAfterTreatmentSystemRequest> 
    </xsl:template> 

    <xsl:template match="afterTreatmentSystem"> 
      <afterTreatmentSystem delta="true" dataCardAvailable="true"> 
       <xsl:attribute name="id"> 
        <xsl:value-of select="ID"/> 
       </xsl:attribute> 
       <activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name=""/> 
       <activeProductDate> 
        <xsl:attribute name="shipmentDate"> 
         <xsl:value-of select="shipmentDate"/> 
        </xsl:attribute> 
        <xsl:attribute name="technicalApprovalDate"> 
         <xsl:value-of select="technicalApprovalDate"/> 
        </xsl:attribute> 
       </activeProductDate> 
      </afterTreatmentSystem> 
    </xsl:template> 

    <xsl:template match="executionSettingsDate"> 
      <executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen"> 
       <xsl:attribute name="date"> 
        <xsl:value-of select="."/> 
       </xsl:attribute> 
      </executionSettings> 

    </xsl:template> 
</xsl:stylesheet> 

UPDATE: 私は、XMLとXSLのセグメント再挿入した - 彼らはうまく機能しているバージョンと一致することVS2010でIE Developer Tools(F12)を使用するためのDimitreの提案に続いて、私は変換の一部がであることがわかりましたが、私はまだexecutionSettings要素がありません。

予想される出力は:

<?xml version="1.0" encoding="utf-8"?> 
<nsmajorassemblyai:storeAfterTreatmentSystemRequest category="MajorAssemblyAdapter" delta="true" version="2.10" xmlns:nsmajorassemblyai="http://majorassembly.mysite.com/ai"> 
    <requestHeader userId="d2vswen" /> 
    <afterTreatmentSystem delta="true" dataCardAvailable="true" id="93073010005597"> 
    <activeCustomer addressCity="" addressCountry="" addressStreet="" addressZip="" customerNumber="" firstname="" name="" /> 
    <activeProductDate shipmentDate="20120330" technicalApprovalDate="20120331" /> 
    </afterTreatmentSystem> 
    <executionSettings causation="plant" issueThreshold="err" systemPriority="2" unresolvedConflictAction="notifyAdmin" userId="d2vswen" date="2012-03-30T14:17:26" /> 
</nsmajorassemblyai:storeAfterTreatmentSystemRequest> 
+0

ブラウザで - XMLが整形式ではありませんXML文書。正してください。引き続き同じ結果が得られる場合は、ファイル 'abc.xslt'がXMLファイルと同じディレクトリにあることを確認してください。 –

+0

XMLは整形式であり、両方のファイルが同じフォルダにあります。 – CJM

+0

CJM:私の答えで言われたように、変換はOKを実行し、これは検証できます。 HTMLではないので、ブラウザは結果を表示しません。 –

答えて

1

例を修正すると以前の回答が削除されました。これは、コマンドラインとのsaxon6の両方、私の作品

IE(9)これは、VSでエラーが発生します

enter image description here

+0

申し訳ありませんDavid - 私の営業を確認しようとして、私はそれを悪化させました!私は間違ったXSLTを追加しました - 今修正されました。 – CJM

+0

私が投稿したXML/XSLTからXMLを作り直し、同様の結果が得られるかどうかを確認します。 – CJM

+0

私は当初何が間違っていたのかよく分かりませんが、私がVS *で開発したXML + XSLTの組み合わせはIE9で正しく変換します。私はVSバージョンの変更を思い出さないので、IE9テストバージョンを作成するときに最初に何かを間違ってコピーしたと仮定することしかできません。 – CJM

1

変換はIE9で正しく行われているが、それはHTMLではないようrewultは、表示されません。

これを確認するには、F12をクリックし、HTMLタブで要素を展開します。

+0

F12は私が見逃していた便利なトリックです!変換の*いくつかが*実行されたが、すべてではないことを示しています - executionSettings要素がありません。 – CJM

関連する問題