2017-04-03 29 views
1

私は以下のクラスを持っているの変換しますそれぞれは動作しません...XSLTは辞書<文字列、文字列>

結果のXMLは次のとおりです。

<HelloWorldDictionary xmlns="http://schemas.datacontract.org/2004/07/CommunicationTests.XsltEmail" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
<FirstName>Foo</FirstName> 
<Items xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
    <a:KeyValueOfstringstring> 
     <a:Key>Key1</a:Key> 
     <a:Value>12345678912</a:Value> 
    </a:KeyValueOfstringstring> 
    <a:KeyValueOfstringstring> 
     <a:Key>Key2</a:Key> 
     <a:Value>ABC1234</a:Value> 
    </a:KeyValueOfstringstring> 
    <a:KeyValueOfstringstring> 
     <a:Key>Key3</a:Key> 
     <a:Value>Test</a:Value> 
    </a:KeyValueOfstringstring> 
</Items> 
<LastName>Bar</LastName> 

アイテム辞書から各キーと値のペアをつかむために私のための正しいXSLT構文は何ですか?

+1

そして、どのように正確にxsltをクラスに適用しますか? – Evk

+2

実際のXMLの外観はどうですか?スタイルシートを適用する前にクラスをシリアライズしていると仮定します。 XMLを質問に追加してください。 –

+0

申し訳ありませんが、私はちょうどそれを追加しました。 – Matei

答えて

2

質問のxmlでは、名前空間は厄介なビットです。あなたは全体の名前空間を観察する必要があります。

xmlns:dc="http://schemas.datacontract.org/2004/07/CommunicationTests.XsltEmail" 
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" 

xsltの最上部にあるとします。その後、我々は(未テスト)のようなものがあります。

<xsl:template match="/dc:HelloWorldDictionary"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <br/> 
    <a> 
    Hi there <xsl:value-of select="dc:FirstName" /> <xsl:value-of select="dc:LastName" />! 
    </a> 
    <br/> 
    <br/> 
    <xsl:for-each select="dc:Items/*"> 
    <xsl:value-of select="a:Key" /> 
    <span> : </span> 
    <xsl:value-of select="a:Value" /> 
    <br/> 
    </xsl:for-each> 
</html> 

しかし、IMOデフォルトほとんどの場合、(空の)名前空間にこだわったほうが良いと思いますが。悲しいことに、DataContractSerializerは同意しません...

+0

チャームのように働いた。ちょうど名前空間を定義し、エイリアスを使用し、すべてが働いた、ありがとう! – Matei

関連する問題