2011-01-06 12 views
3

私たちは奇妙な問題を抱えています。いくつかのXSLTファイルを使用してかなり複雑なXMLファイルを変換していますが、これは問題ではありません。XMLファイルにスキーマが添付されていると、XSLTトランスフォームは機能しませんか?

問題は、XMLファイルがスキーマにアタッチされている場合、変換が機能しないということです。スキーマ宣言が削除されても問題なく動作します。

問題の原因となる手掛かりはありますか?ここで

は、スキーマdeclationは

<xs:schema id="play" 
targetNamespace="highway" 
elementFormDefault="qualified" 
xmlns="highway" 
xmlns:mstns="highway" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

であり、我々は単にそれをリンクするために、次のコードを使用している(Visual Studioのインテリセンスが、その後でキック)

<helloElement name="hello" xmlns="highway"> 

私は上に行くために、このありえないが、非常に感謝症状の点で何を提供するかわからない場合は、必要な情報があれば教えてください。

多くの感謝!

+0

null(または空の)名前空間URIの下にある要素のスキーマを定義することは可能です。 –

+0

XMLのxsdを参照するときの[xslトランスフォームの問題の正確な重複](http://stackoverflow.com/questions/4611359/xsl-transform-problem-when-referencing-xsd-in-xml) –

答えて

5

問題はスキーマではなく、問題はスタイルシートが考慮する必要がある名前空間宣言xmlns="highway"です。

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:hw="highway" 
    version="1.0"> 

    <xsl:template match="hw:helloElement"> 
    ... 
    </xsl:template> 

</xsl:stylesheet> 

などのように、プレフィックスを使用する必要がある要素に一致するか、どこにあるかを選択します。

+0

ありがとう、ありがとうに – Keeno

2

スキーマ宣言を追加すると、以前は存在しなかったXMLドキュメント(xmlns="highway")にデフォルトの名前空間が追加されます。これにより、すべての要素が<someElement>でなくなり、<highway:someElement>であるため、XSLTの要素参照とXPATHの解釈に影響します。詳細についてはthis linkをご覧ください。

関連する問題