xml
  • xslt
  • xmi
  • 2015-04-23 2 views 0 likes 
    0

    Я хочу выбрать родительский элемент тега XMI в цикле for-each. Вот мой вклад:выберите родительский элемент тега с XSLT

    <XMI xmi.version='1.2' xmlns:UML="org.omg.xmi.namespace.UML"> 
        <XMI.content> 
         <UML:Model xmi.id='eee_1045467100313_135436_1' name='Data'> 
          <UML:Namespace.ownedElement> 
           <UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_23' 
            name='migration2'> 
    
           <UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_22' 
            name='migration'> 
            <UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_151' 
             name='Employee'> 
             <UML:Classifier.feature> 
              <UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_168' 
               name='cin'> 
              </UML:Attribute> 
             </UML:Classifier.feature> 
            </UML:Class> 
            <UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_152' 
             name='Employee2'> 
             <UML:Classifier.feature> 
              <UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_169' 
               name='cin2'> 
              </UML:Attribute> 
             </UML:Classifier.feature> 
            </UML:Class> 
            <UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_153' 
             name='Employee3'> 
             <UML:Classifier.feature> 
              <UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_170' 
               name='cin3'> 
              </UML:Attribute> 
             </UML:Classifier.feature> 
            </UML:Class> 
    
           </UML:Package> 
           </UML:Package> 
          </UML:Namespace.ownedElement> 
         </UML:Model> 
        </XMI.content> 
    </XMI> 
    

    так, чтобы выбрать UML: Пакет с XSLT Я использую выберите вариант для-каждого цикла:

    <xsl:for-each 
            select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package"> 
            <packagedElement> 
             <xsl:attribute name="xmi:type">uml:package</xsl:attribute> 
             <xsl:attribute name="xmi.id"> 
             <xsl:value-of select='@xmi.id' /> 
            </xsl:attribute> 
             <xsl:attribute name="name"> 
             <xsl:value-of select='@name' /> 
            </xsl:attribute> 
    </xsl:for-each> 
    

    есть ли возможность заменить

    select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package"

    PS: I'v e try */UML: Package и ../UML:Package, но это не сработало. любая помощь?

    +0

    Что 'UML: Package'do вы хотите выбрать? Их два, и вы должны выбрать их по имени. Btw, это раздражает, что код выходит из окна из-за ваших вкладок. –

    +0

    Я хочу выбрать каждый UML: Пакет в моем исходном коде для внесения изменений на него и сохранить ту же иерархию входного файла – Iheb

    ответ

    0

    Для выбора всех UML:Package элементов, вы можете просто написать

    select="//UML:Package" 
    
    +0

    спасибо, что это работает для меня! – Iheb

    +0

    @Iheb Я рад, что вы нашли ответ, но это не означает, что «* выберите родительский элемент тега XMI в каждом цикле. *». –

    0

    Ваш вопрос не совсем ясен.

    Я хочу выбрать родительский элемент тега XMI в цикле for-each.

    Эта часть проста: просто используйте parent::* или в ближайшее время ../*. Но это будет работать только тогда, когда вы уже находитесь в контексте некоторого узла, у которого есть родитель. Так что ваш вопрос:

    Есть ли возможность заменить

    select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package" 
    

    не имеет никакого смысла в этом сценарии.

    +0

    , как я могу использовать 'parent :: *' в цикле for-each? – Iheb

    +0

    Используйте его для чего? Пожалуйста, разверните свой вопрос и объясните, что именно вы пытаетесь сделать. –

    +0

    Ok, Используйте родительский :: * in for-each цикл, чтобы выделить родительский узел – Iheb

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