2017-07-12 14 views
0

私はXMLルックアップドキュメントを持っていて、少し速く実行しようとしています。私は繰り返し異なる属性を返すためにドキュメントを検索します。単一の検索ですべての属性を返し、返された値を解析することは可能ですか?サンプルコード:XSLT/XPATHのドキュメントルックアップから複数の属性を返す

  <xsl:attribute name="Oracle_Routing"> 
       <xsl:value-of select="key('table-lookup', $curr_key, $LookupDoc)/@OracleSchema"/> 
      </xsl:attribute> 
      <xsl:attribute name="TableName"> 
       <xsl:value-of 
       select="key('table-lookup', $curr_key, $LookupDoc)/@DestinationTable"/> 
      </xsl:attribute> 
      <xsl:variable name="Column" 
      select="key('table-lookup', $curr_key, $LookupDoc)/@ColumnName"/> 

答えて

0

あなたは確かに<xsl:variable name="referenced-node" select="key('table-lookup', $curr_key, $LookupDoc)"/>を保存し、次に使用してください。

 <xsl:attribute name="Oracle_Routing"> 
      <xsl:value-of select="$referenced-node/@OracleSchema"/> 
     </xsl:attribute> 

代わりの

 <xsl:attribute name="Oracle_Routing"> 
      <xsl:value-of select="key('table-lookup', $curr_key, $LookupDoc)/@OracleSchema"/> 
     </xsl:attribute> 

のように。 (ちなみに、select属性をxsl:attribute、たとえば<xsl:attribute name="Oracle_Routing" select="$referenced-node/@OracleSchema"/>に単に使用することをお勧めします)。

3つの属性をすべて保存することもできます。 <xsl:variable name="atts" as="attribute()*" select="key('table-lookup', $curr_key, $LookupDoc)/(@OracleSchema, @DestinationTable, @ColumnName)"/>である。 <xsl:attribute name="Oracle_Routing" select="$atts[1]"/>ですが、属性を追加または削除して1つのインデックスが変更されると、2つのコード変更が必要になります。

+0

ありがとうございました。私は2番目の "as =属性"をテストしました。インデックスには検索の属性順に対応していません。インデックスの順序は、ルックアップ文書で見つかった順序にマッピングされているように見えますか? – user1854326

+0

key( 'table-lookup'、$ curr_key、$ LookupDoc)の$ eに ''代わりに?問題を示すために、いくつかのサンプルデータを使用して質問を編集することができます。 '/'は、入力データに応じてドキュメントの順序で右辺をソートします(そのキー呼び出しでいくつかの要素が見つかりますか?)、2つの方法で異なる結果が得られるかもしれません。 –

関連する問題