0

現時点で解決策が見つからなかったこの問題について、誰かが私を助けてくれることを願っています。XML を変換するために初めて XSLT を使用しています。私が見つけている問題は、テンプレートを使用して、属性値を持つMessage要素に到達することです。ところで、私は XML を生成しておらず、その構造を変更することはできません

    <?xml version="1.0" encoding="UTF-8"?>
    <ns1:Message >
    <ns1:Notification> 
        <ns22:Message>
        <ns1:Message value="timestamp">
        </ns1:Message>
        </ns22:Message>
    </ns1:Notification>
    </ns1:Message>
4

2 に答える 2

0

私は問題を解決しました。助けてくれた James に感謝します。あなたの答えは非常に洞察力があり、それを理解するのに役立ちました。名前空間の使用を避け、次のように直接パスを指定しようとしました

  <xsl:value-of select="/Message/Notification/Message/Message/@value"/>

必要なデータを取得します。ただし、次のようなもっと派手なことをしようとしました

パス上に名前空間があることでファイル上のデータが取得されないことを強調したい これはすべての人に当てはまるとは限らない

        <xsl:template match="Item">   
      <xsl:if test="@Name = 'Token'">
                <xsl:value-of select="@Value"/>   
          </xsl:if>
      </xsl:template> 

item要素で機能しました

        <?xml version="1.0" encoding="UTF-8"?>
        <ns1:Message >
            <ns1:Notification> 
              <ns22:Message>
               <ns1:Message value="timestamp">
                 <ns1:item Token=1643512>
                 <ns1:item Token2=44553512>
                   </ns1:Message>
                </ns22:Message>
             </ns1:Notification>
               </ns1:Message>

したがって、そのメッセージタグに到達するためのテンプレートを作成することは、私がうまくいかなかったものです。上記の解決策は、私が望むものを手に入れるための素晴らしく汚い方法ですが。メッセージタグに到達するために上記と同様の方法でテンプレートを作成しても機能せず、 xslt 全体が壊れる理由を誰かが教えてくれます。ありがとうございます

于 2013-05-14T10:29:46.587 に答える