0

XML をある形式から別の形式に変換する XSLT を作成しようとしています。.xsltファイルを VS 2010 の XML ファイルに適用すると、出力 XML 構造が問題なく作成されます。しかし、処理が期待するデータを埋めませんxsl:value-of

式を使用XMLSpyして評価すると、次の XSLT の式が対象になります。しかし、XPath 式の最後で関数を使用すると、値が表示されます。XPathno resultnode()

  1. XPath の正しい書き方は?
  2. 要素のコンテンツを読み取るために毎回本当に必要な関数はありますか(子要素がない場合node()) ? text()いいえの場合、これらの関数がないと XmlSpy も結果を返さないのはなぜですか?
  3. XSLT のデバッグ中に (テンプレートの一致値を "/" から "ServiceMessage" に変更すると)、VS 2010 が組み込みのテンプレート ルールに入ることがあります。なぜそうなのですか?VS 2010 の組み込みテンプレートを削除するにはどうすればよいですか?

最初にw3school チュートリアルに従いました。私は XSLT が初めてです。

これは、他の XML 形式に変換したい私の XML です。

<ServiceMessage xmlns="http://requestservice/requests" xmlns:req="http://requestservice/requests/xmlstds">

<TypeOfReq> General </TypeOfReq>
<Details>
   <Id> 123456789 </Id>
   <SenderDetails>
        <Sender id="345"></Sender>
   </SenderDetails>
</Details>

</ServiceMessage>

これは私のXSLTです

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <request>
      <requestType>
        <xsl:value-of select="ServiceMessage/TypeOfReq" />
      </requestType>
      <Id>
        <xsl:value-of select="ServiceMessage/Details/Id"/>
      </Id>
      <senderId>
        <xsl:value-of select="ServiceMessage/Details/SenderDetails/Sender/@id"/>
      </senderId>
    </request>

  </xsl:template>



</xsl:stylesheet>
4

2 に答える 2