2016-08-03 12 views
0

My CategoryType.xml文書には、次のxml要素が多数(約7000)含まれています。xsltの関数を使用してxml要素にアクセスする

ここでは、ATRIBUTE_NAMEとATTIBUTE_CODEの組み合わせがユニークであることにご注意ください。

<type> 
 
\t <Category ATRIBUTE_NAME="CDITP" ATTIBUTE_CODE="3"> 
 
\t \t <referenceCode>1000</referenceCode> 
 
\t \t <referenceName>TelephoneNumber</referenceName> 
 
\t </Category> 
 
\t <Category ATRIBUTE_NAME="CDMTHDTP" ATTIBUTE_CODE="9"> 
 
\t \t <referenceCode>1009</referenceCode> 
 
\t \t <referenceName>Contact Details</referenceName> 
 
\t </Category> 
 
\t - 
 
\t - 
 
\t - 
 
</type>

さて、私はATRIBUTE_NAMEとATTIBUTE_CODEとして入力がかかりますXSLTを使用して機能を開発したいと私はので、機能を必要とするのはなぜreferenceCode、referenceName

を戻ります私は変換xsltで膨大な数の変換を行う必要があるため、関数が便利になるでしょう。

私はインターネットを検索し、満足のいく回答を見つけることができませんでした。

助けてください。

答えて

1

機能がkeyの名前とあなたは、単にキー(https://www.w3.org/TR/xslt-30/#key)を定義する必要がXSLT 3.0で

<xsl:key name="cat" match="type/Category" use="ATRIBUTE_NAME, ATTIBUTE_CODE" composite="true"/> 

、その後、例えば呼び出しています

key('cat', ('CDITP', '3'))/(referenceCode, referenceName) 

データを返す。 XSLT 2.0では、キーを

<xsl:key name="cat" match="type/Category" use="concat(ATRIBUTE_NAME, '|', ATTIBUTE_CODE)"/> 

と定義し、次に例を呼び出します。

key('cat', concat('CDITP', '|', '3'))/(referenceCode, referenceName) 

+0

返信いただきありがとうございます! – Sunny

+0

私はここに1つの事を追加したいです - 私のXML文書は唯一のXMLではありません。基本的には、私はWebサービスの入力要求を変換し、そのリクエストではATTIBUTE_CODEが利用可能になり、ATRIBUTE_NAMEを追加し、前述のドキュメントを呼び出して値を取得し、最終的に要求xmlに追加してから受信者に送信します。それに応じて助言してください。 – Sunny

+0

'key'関数には、コンテキスト文書やノードを提供するためのオプションの第3引数があります。そのため、同じ変換でさまざまな入力文書を扱う場合に使用します。それが助けにならない場合は、あなたの質問を編集し、あなたが持っているものをより詳細に説明する必要があります。 –

関連する問題