2016-08-03 2 views
0

В моем документе CategoryType.xml содержатся следующие элементы xml в большом количестве (около 7 тысяч).Доступ к элементу xml с использованием функций в xslt

Обратите внимание, что комбинация 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>

Теперь я хочу, чтобы разработать функцию, используя XSLT, который будет принимать ввод как ATRIBUTE_NAME и ATTIBUTE_CODE и возвращает обратно referenceCode, referenceName

Почему нужна функция, потому что Мне нужно сделать огромное количество преобразований в моем преобразовании xslt, и, следовательно, функция пригодится.

Я искал интернет и не смог найти удовлетворительные ответы.

Пожалуйста, помогите.

ответ

1

Функция называется key и вам просто нужно определить ключ (https://www.w3.org/TR/xslt-30/#key)

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

в XSLT 3.0, а затем вызвать, например,

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

Я хочу добавить одну вещь здесь - мой XML-документ - не единственный xml. В принципе, я буду преобразовывать запрос на ввод веб-службы, и в этом запросе будет доступен ATTIBUTE_CODE, и я добавлю ATRIBUTE_NAME и вызову вышеупомянутый документ, чтобы получить значения, которые в конечном итоге я добавлю в XML-запрос, а затем отправлю его получателю. Пожалуйста, советую соответствующим образом. – Sunny

+0

Ну, функция 'key' имеет необязательный третий аргумент для предоставления контекстного документа или узла, поэтому используйте это, если вы имеете дело с различными входными документами в одном и том же преобразовании. Если это не поможет, вам нужно отредактировать свой вопрос и более подробно объяснить, что у вас есть. –

 Смежные вопросы

  • Нет связанных вопросов^_^