2016-09-05 10 views
1

Я новичок в xslt, поэтому, пожалуйста, пройдите ко мне. У меня такой xml.XSLT: создать и сохранить карту в XSLT

<?xml version="1.0" encoding="UTF-8"?> 
    <?xml-stylesheet type="text/xsl" version="1.0"?> 
    <process> 
    <groups> 
     <group id="sid-17d5a8eaba5e4313bd4958e74f25d3df" name="GroupA"> 
      <person-ref>sid-446515B9-2247-4657-A612-4693825B1ACF</person-ref> 
      <person-ref>sid-A57CAAA3-5FBA-4E8B-B530-A69571FDDF9A</person-ref> 
      <person-ref>sid-CFEC4F6D-2614-4887-90DE-9FE13AE44091</person-ref> 
     </group> 
     <group id="sid-d9dc88f7077046e9825e87c349d75909" name="GroupB"> 
      <person-ref>sid-BE136A0A-3A44-4C4A-B661-6F606D64AA94</person-ref> 
      <person-ref>sid-E9C5B00D-BF64-4560-96E4-EE111CC98AB4</person-ref> 
      <person-ref>sid-B2217776-D570-43A7-8110-A11026389EE5</person-ref> 
     </group> 
    </groups> 

    <persons> 
     <person id="sid-446515B9-2247-4657-A612-4693825B1ACF"/> 
     <person id="sid-B2217776-D570-43A7-8110-A11026389EE5"/> 
    </persons> 
    </process> 

То, что я люблю, чтобы достичь получает соответствующую группу каждого человека, что-то вроде этого:

<persons> 
    <person id="sid-446515B9-2247-4657-A612-4693825B1ACF"> 
     <Link name="GroupA" targetId="sid-17d5a8eaba5e4313bd4958e74f25d3df" /> 
    </person> 
    <person id="sid-B2217776-D570-43A7-8110-A11026389EE5"> 
     <Link name="GroupB" targetId="sid-d9dc88f7077046e9825e87c349d75909" /> 
    </person> 
    </persons> 

Мой подход заключается в создании карты групп, а затем сохранить его в глобальном масштабе. Я уже делал это через некоторые исследования в Интернете, но xslt, похоже, очень затрудняет создание карт.

+0

Это не XML: ''. –

ответ

1

Мой подход заключается в том, чтобы создать карту групп, а затем сохранить ее глобально.

Я не уверен, что вы имеете в виду Предпочтительный подход здесь будет использовать key для поиска данных из соответствующей группы «создать карту групп, а затем хранить его глобально.»:

XSLT 1,0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:key name="my-group" match="group" use="person-ref" /> 

<xsl:template match="/process"> 
    <persons> 
     <xsl:for-each select="persons/person"> 
      <xsl:variable name="group" select="key('my-group', @id)" /> 
      <person id="{id}"> 
       <Link name="{$group/@name}" targetId="{$group/@id}" /> 
      </person> 
     </xsl:for-each> 
    </persons> 
</xsl:template> 

</xsl:stylesheet> 
-1

попробовать это

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" /> 
    <xsl:key name="my-group" match="group" use="person-ref" /> 
    <xsl:template match="/process/groups"> 
     <persons> 
      <xsl:for-each select = "group/person-ref"> 
       <xsl:variable name="ref" select="." /> 
       <xsl:variable name="group" select="key('my-group', $ref)" /> 
       <person id="{$ref}"> 
        <Link name="{$group/@name}" targetId="{$group/@id}" /> 
       </person> 
      </xsl:for-each> 
     </persons> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Почему вы публикуете это? Он не выводит запрошенный результат. –

+0

Хм .. думаю. См. Там http://online-toolz.com/tools/xslt-transformation.php –

+0

Я знаю, что это не так, потому что я его запустил. –

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