XSLT : XSLT를 사용하여 xml 데이터를 계층 구조로 변환하는 방법

샤 생크 G

XSLT를 사용하여 플랫 XML 파일에서 계층 적 XML 파일을 만들려고하는데 최선의 방법이 무엇인지 모르겠습니다.

XML에는 처리 할 데이터 요소가 있으며 각 데이터 요소에는 "속성"및 "관계"가 있습니다. 속성-현재 데이터와 관련된 정보를 포함합니다. 관계-하위 요소 (개체) 및 상위 ID와 관련된 정보를 포함합니다.

요소에 대한 상위 ID가없는 경우 데이터는 레벨 1로 그룹화되어야하며 후속 하위 요소는 레벨 2로 그룹화되어야합니다. 아래에 제공된 예에는 4 레벨까지의 데이터와 관계가 포함되어 있습니다. 실제 xml에는 더 많은 수준이 포함되어 있습니다. for-each의 조합을 시도하고 기능을 선택했는데 두 단계까지만 얻을 수있었습니다. 완전한 레벨을 얻기 위해 xml을 변환하는 XSLT로 저를 도울 수 있다면 감사합니다. 미리 감사드립니다!

입력 XML :

<results>
    <content>
        <data>
            <id>12345</id>
            <properties>
                <name>ABC</name>
                <date>2020-07-18</date>
            </properties>
            <relations>
                <object>
                    <data>
                        <id>67890</id>
                    </data>
                </object>
            </relations>
        </data>

        <data>
            <id>67890</id>
            <properties>
                <name>XYZ</name>
                <date>2020-07-18</date>
            </properties>
            <relations>
                <object>
                    <data>
                        <id>22246</id>
                    </data>
                </object>
                <parent>
                    <data>
                        <id>12345</id>
                    </data>
                </parent>
            </relations>
        </data>

        <data>
            <id>22246</id>
            <properties>
                <name>DEF</name>
                <date>2020-07-18</date>
            </properties>
            <relations>
                <object>
                    <data>
                        <id>68681</id>
                    </data>
                </object>
                <parent>
                    <data>
                        <id>67890</id>
                    </data>
                </parent>
            </relations>
        </data>

        <data>
            <id>68681</id>
            <properties>
                <name>UVW</name>
                <date>2020-07-18</date>
            </properties>
            <relations>
                <parent>
                    <data>
                        <id>22246</id>
                    </data>
                </parent>
            </relations>
        </data>
    <content>
</results>

예상 출력 :

<results>
    <content>
        <Level>
            <id>12345</id>
            <properties>
                <name>ABC</name>
                <date>2020-07-18</date>
            </properties>
            <relations>
                <object>
                    <data>
                        <id>67890</id>
                    </data>
                </object>
            </relations>
            
            <Leve2>
                <id>67890</id>
                <properties>
                    <name>XYZ</name>
                    <date>2020-07-18</date>
                </properties>
                <relations>
                    <object>
                        <data>
                            <id>22246</id>
                        </data>
                    </object>
                    <parent>
                        <data>
                            <id>12345</id>
                        </data>
                    </parent>
                </relations>
                
                <Leve3>
                    <id>22246</id>
                    <properties>
                        <name>DEF</name>
                        <date>2020-07-18</date>
                    </properties>
                    <relations>
                        <object>
                            <data>
                                <id>68681</id>
                            </data>
                        </object>
                        <parent>
                            <data>
                                <id>67890</id>
                            </data>
                        </parent>
                    </relations>
                    
                    <Leve4>
                        <id>68681</id>
                        <properties>
                            <name>UVW</name>
                            <date>2020-07-18</date>
                        </properties>
                        <relations>
                            <parent>
                                <data>
                                    <id>22246</id>
                                </data>
                            </parent>
                        </relations>
                    </Leve4>
                </Leve3>
            </Leve2>
        </Level>        
    <content>
</results>

계층:

<Level1>
    Parent1
    <Level2>
        Child1
        ...
        <Level3>
            Child1a
            ...
            <Level4>
                Child1aa
                ...
            </Level4>
        </Level3>
    </Level2>
<Level1>

<Level1>
    Parent2
    <Level2>
        Child2
        ...
        <Level3>
            Child2a
            ...
            <Level4>
                Child2aa
                ...
            </Level4>
        </Level3>
    </Level2>
<Level>
...
마이클 케이

문제를 아주 명확하게 설명하지 않았습니다. X의 <parent>요소가 Y의 참조를 포함하는 경우 출력 에서 X가 Y의 자식이되기를 원한다고 가정하고 있습니다 <id>. (내가 옳은 것이 문제인 경우 데이터는 많은 문제와 관련이없고 이해를 방해하는 혼란스러운 것).

이 가정에서 먼저 주어진 상위 항목을 쉽게 찾을 수있는 키를 정의하십시오.

<xsl : key name = "parent-key"match = "content / data"use = "relations / parent / object / id"/>

그런 다음 하나의 레코드를 처리 할 때 key () 함수를 사용하여 하위 항목을 가져옵니다.

<xsl:template match="content/data">
  <xsl:param name="level" select="1"/>
  <xsl:element name="Level{$level}">
    <xsl:copy-of select="."/>
    <xsl:apply-templates select="key('parent-key', id)">
      <xsl:with-param name="level" select="$level + 1"/>
    </xsl:apply-templates>
  </xsl:element>
</xsl:template>

그런 다음 가장 높은 수준의 요소에서 처리를 시작하십시오 (귀하의 예에서는 이것이 첫 번째 요소이며 항상 그런지 모르겠습니다)

<xsl:template match="/">
  <results>
    <content>
      <xsl:apply-templates select="data[1]"/>
    </content>
  </results>
</xsl:template>

검증되지 않은.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XSLT를 사용하여 CSV를 계층 적 XML로 변환

분류에서Dev

XSLT 1.0을 사용하여 XML 구조를 변환하는 방법

분류에서Dev

XSLT를 사용하여 XML을 XML로 변경하는 방법

분류에서Dev

xslt를 사용하여 xml을 html 테이블로 변환하는 방법

분류에서Dev

xslt를 사용하여이 XML을 변환하는 방법

분류에서Dev

XSLT를 사용하여 스키마 XML을 CSV로 변환하는 방법

분류에서Dev

XSLT를 사용하여 스키마 XML을 CSV로 변환하는 방법

분류에서Dev

XSLT를 사용하여 XML 데이터에서 XForms로 변환

분류에서Dev

XSLT를 사용하여 XML 파일을 변환하는 방법

분류에서Dev

XSLT에서 XML 데이터를 CSV 형식으로 변환하는 방법

분류에서Dev

XSLT를 사용하여 XML 콘텐츠를 변환하는 방법에 대한 조언 구하기

분류에서Dev

XSLT를 사용하여 이미 변환 된 XML을 변환하는 방법

분류에서Dev

xslt를 사용하여 xml의 텍스트를 html의 하이퍼 링크로 변환하는 방법

분류에서Dev

XSLT를 사용하여 조건에 따라 XML 값을 변경하는 방법

분류에서Dev

xslt를 사용하여 중첩 된 Json 객체를 XML로 변환하는 방법

분류에서Dev

SQLServer에서 FOR XML을 사용하여 계층 구조를 만드는 방법

분류에서Dev

XSLT 1.0을 사용하여 XML 단위를 변환하는 방법

분류에서Dev

XSLT를 사용하여 XML을 SQL 쿼리로 변환하는 방법은 무엇입니까?

분류에서Dev

XSLT를 사용하여 XML 파일을 RDF / XML로 변환

분류에서Dev

XSLT를 사용하여 XML을 XML로 변환

분류에서Dev

XSLT를 사용하여 FGDC XML을 ISO XML로 변환

분류에서Dev

XML 및 XSLT로 계산기를 수행하는 방법

분류에서Dev

xslt 1.0을 사용하여 텍스트 파일을 계층 적 배열로 변환하는 방법

분류에서Dev

XSLT를 사용하여 링크를 소문자로 변환하는 방법

분류에서Dev

xslt를 사용하여 주어진 xml을 재구성하는 방법

분류에서Dev

XSLT를 사용하여 네임 스페이스로 XML 변환

분류에서Dev

계층 적 하위 쿼리를 사용하여 계층 구조 경로를 작성하는 방법

분류에서Dev

Xslt : 조건이있는 XML 데이터를 구문 분석하고 에코하는 방법

분류에서Dev

xslt를 사용하여 xml을 정렬하는 방법

Related 관련 기사

  1. 1

    XSLT를 사용하여 CSV를 계층 적 XML로 변환

  2. 2

    XSLT 1.0을 사용하여 XML 구조를 변환하는 방법

  3. 3

    XSLT를 사용하여 XML을 XML로 변경하는 방법

  4. 4

    xslt를 사용하여 xml을 html 테이블로 변환하는 방법

  5. 5

    xslt를 사용하여이 XML을 변환하는 방법

  6. 6

    XSLT를 사용하여 스키마 XML을 CSV로 변환하는 방법

  7. 7

    XSLT를 사용하여 스키마 XML을 CSV로 변환하는 방법

  8. 8

    XSLT를 사용하여 XML 데이터에서 XForms로 변환

  9. 9

    XSLT를 사용하여 XML 파일을 변환하는 방법

  10. 10

    XSLT에서 XML 데이터를 CSV 형식으로 변환하는 방법

  11. 11

    XSLT를 사용하여 XML 콘텐츠를 변환하는 방법에 대한 조언 구하기

  12. 12

    XSLT를 사용하여 이미 변환 된 XML을 변환하는 방법

  13. 13

    xslt를 사용하여 xml의 텍스트를 html의 하이퍼 링크로 변환하는 방법

  14. 14

    XSLT를 사용하여 조건에 따라 XML 값을 변경하는 방법

  15. 15

    xslt를 사용하여 중첩 된 Json 객체를 XML로 변환하는 방법

  16. 16

    SQLServer에서 FOR XML을 사용하여 계층 구조를 만드는 방법

  17. 17

    XSLT 1.0을 사용하여 XML 단위를 변환하는 방법

  18. 18

    XSLT를 사용하여 XML을 SQL 쿼리로 변환하는 방법은 무엇입니까?

  19. 19

    XSLT를 사용하여 XML 파일을 RDF / XML로 변환

  20. 20

    XSLT를 사용하여 XML을 XML로 변환

  21. 21

    XSLT를 사용하여 FGDC XML을 ISO XML로 변환

  22. 22

    XML 및 XSLT로 계산기를 수행하는 방법

  23. 23

    xslt 1.0을 사용하여 텍스트 파일을 계층 적 배열로 변환하는 방법

  24. 24

    XSLT를 사용하여 링크를 소문자로 변환하는 방법

  25. 25

    xslt를 사용하여 주어진 xml을 재구성하는 방법

  26. 26

    XSLT를 사용하여 네임 스페이스로 XML 변환

  27. 27

    계층 적 하위 쿼리를 사용하여 계층 구조 경로를 작성하는 방법

  28. 28

    Xslt : 조건이있는 XML 데이터를 구문 분석하고 에코하는 방법

  29. 29

    xslt를 사용하여 xml을 정렬하는 방법

뜨겁다태그

보관