2012-07-03 105 views
-2

嗨我有一個xml文檔,其中有家庭列表和家庭成員列表以及後來的家庭到FamilyMember鏈接。我要創建的是,在格式顯示一個HTML表格內容 學會
1.家庭
1.1 FamilyA
1.1.1的member1
1.1.2 Member4
1.2 FamilyB
1.2.1 Member2一個XSL
1.2.2 Member3
1.2.3 Member5
1.2.4 Member6
XML到XSLT轉換

點擊鏈接應導航到的相應部分頁。請幫我解決這個問題

  <?xml version="1.0" encoding="utf-8"?> 
    <society> 
     <families> 
      <family> 
       <name>A</name> 
       <numberofMembers>2</numberofMembers> 
       <Description>abc</Description> 
       <place></place> 
      </family> 
      <family> 
       <name>B</name> 
       <numberofMembers>4</numberofMembers> 
       <Description>xyz</Description> 
       <place></place> 
      </family> 
     </families> 
     <familyMembers> 
      <familyMember> 
      <name>member1</name> 
      <occupation>blah</occupation> 
      <ID>1</ID> 
      </familyMember> 
      <familyMember> 
       <name>ghij</name> 
       <occupation>blah2</occupation> 
       <ID>2</ID> 
      </familyMember> 
      <familyMember> 
       <name>member2</name> 
       <occupation>blah3</occupation> 
       <ID>3</ID> 
      </familyMember> 
      <familyMember> 
       <name>member3</name> 
       <occupation>bgd</occupation> 
       <ID>4</ID> 
      </familyMember> 
      <familyMember> 
       <name>member4</name> 
       <occupation>sdjhf</occupation> 
       <ID>5</ID> 
      </familyMember> 
      <familyMember> 
       <name>member5</name> 
       <occupation>member6</occupation> 
       <ID>6</ID> 
      </familyMember> 
     </familyMembers> 
     <FamilyFamilyMembers> 
      <FamilyFamilyMember> 
       <source> 
        /families/A 
       </source> 
       <target> 
        /familyMember/member1 
       </target> 
      </FamilyFamilyMember> 
      <FamilyFamilyMember> 
       <source> 
        /families/A 
       </source> 
       <target> 
        /familyMember/member4 
       </target> 
      </FamilyFamilyMember> 
      <FamilyFamilyMember> 
       <source> 
        /families/B 
       </source> 
       <target> 
        /familyMember/member2 
       </target> 
      </FamilyFamilyMember> 
      <FamilyFamilyMember> 
       <source> 
        /families/B 
       </source> 
       <target> 
        /familyMember/member3 
       </target> 
      </FamilyFamilyMember> 
      <FamilyFamilyMember> 
       <source> 
        /families/B 
       </source> 
       <target> 
        /familyMember/member5 
       </target> 
      </FamilyFamilyMember> 
      <FamilyFamilyMember> 
       <source> 
        /families/A 
       </source> 
       <target> 
        /familyMember/member6 
       </target> 
      </FamilyFamilyMember> 
     </FamilyFamilyMembers> 
    </society> 
+0

閱讀所有的常見問題在這裏:HTTP:/ /stackoverflow.com/faq – exception

+0

如果您有任何問題,可以與我分享一些類似的例子嗎? –

+0

你是否受限於XSLT 1.0?你可以使用XSLT 2.0嗎? –

回答

1

以下XSLT 1.0解決方案僅解決組織數據的問題。我沒有關心自己的HTML渲染,因爲這是一個平凡的練習,最好留給OP。該解決方案使用for-each和變量聲明將輸入文檔的關係形式解包到輸出中所需的分層形式。如果您需要XSLT 2.0解決方案,請告訴我們,因爲XSLT 20解決方案將更簡單和更小。

這XSLT 1.0樣式表...

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

<xsl:template match="/"> 
    <Families> 
    <xsl:apply-templates select="society/families/family"/> 
    </Families> 
</xsl:template> 

<xsl:template match="family"> 
<xsl:variable name="family-name" select="name" /> 
<family family-name="{name}"> 
    <xsl:variable name="roster" select="../../FamilyFamilyMembers/FamilyFamilyMember 
     [normalize-space(substring-after(source, '/families/')) = $family-name] 
     " /> 
    <xsl:for-each select="../../familyMembers/familyMember"> 
    <xsl:variable name="person-name" select="name" /> 
    <xsl:apply-templates select= "self::node()[ 
     count($roster[normalize-space(substring-after(target, '/familyMember/')) = $person-name]) >= 1 
     ]" /> 
    </xsl:for-each> 
</family> 
</xsl:template> 

<xsl:template match="familyMember"> 
    <family-member member-name="{name}" /> 
</xsl:template> 

</xsl:stylesheet> 

...當施加到樣品的輸入,將產生...

<?xml version="1.0" encoding="utf-8"?> 
<Families> 
    <family family-name="A"> 
    <family-member member-name="member1" /> 
    <family-member member-name="member4" /> 
    </family> 
    <family family-name="B"> 
    <family-member member-name="member2" /> 
    <family-member member-name="member3" /> 
    <family-member member-name="member5" /> 
    </family> 
</Families> 
+0

非常感謝....我錯過了一個讓我感到困擾的步驟..... –