2013-09-27 2 views
0

Мой XML выглядит следующим образом:Получение значения подэлемента атрибута на основе Uniq-ключа с помощью XSLT муравей

<someRoot 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="../my.xsd"> 

    <position name="quality"> 

     <db> 
      <server name="blah-blah" type="xyz"/> 
     </db> 

     <some-more-element value="12345"/> 

     <my-needy-element> 
      <my-needy-sub-element name="uk1" 
        value="a,b,c" 
        more-attr="some-val"/> 
      <my-needy-sub-element name="uk2" 
          value="x,b,y,c" 
        more-attr="some-diff-val"/> 
     </my-needy-element> 

     </position> 
</someRoot> 

ВОССТАНОВЛЕНИЕ сказать, что мое одно имя БД-сервер работает после того, как я xmlproperty & Samy что-то вроде: $ {db.server (имя)}. Теперь я пытаюсь получить значение для подэлементов, но всегда дает мне все значения строк, соответствующие ему. например: $ {my-needy-element.my-needy-sub-element (more-attr)} будет печатать некоторый-val, some-diff-val. Как получить значение атрибута, соответствующее , для уникального уникального имени, что-то вроде {my-needy-element.my-needy-sub-element (more-attr) с именем = "uk1"}

Добавление комментария редактирования: Is там любой путь, даже если я использую xslt ant-task, передав 'uk1' & получить требуемое значение атрибута подэлемента? с XSL: если клавишей или матч

внесения изменений и дополнений больше:

Пытались с XSL & затем XSLT муравьем, но это оленья кожа, кажется, дать то, что я ищу:

<xsl:template match="/someRoot/my-needy-element/my-needy-sub-element"> 

     <someRoot> 
       <xsl:key name="my-needy-sub-element" match="text()" use="@name"/> 
      <xsl:apply-templates select="key('name',$xslParamPassed)"/> 
     </someRoot> 
    </xsl:template> 

спасибо,

ответ

0

вы не можете сделать это с xmlproperty, но вы могли бы рассмотреть вопрос о третьей стороне xmltask который позволяет использовать полноценные XPath выражения:

<xmltask source="file.xml"> 
    <copy path="/someRoot/position/my-needy-element/my-needy-sub-element[@name='uk1']/@more-attr" 
     property="more.attr" /> 
</xmltask> 
<echo>${more.attr}</echo> 
+0

спасибо за это. Но есть ли какой-либо способ, даже если я использую ant-task xslt, передав 'uk1' и получив требуемое значение атрибута подэлемента ?. – user1587504

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