XSL을 사용하여 병합 한 후 여러 XML 파일의 모든 데이터를 처리하는 방법

user2734805

XSL을 사용하여 속성이 다른 값을 갖는 것을 제외하고는 동일한 세 개의 XML 문서를 읽습니다 (잠재적으로 많은 XML 파일을 읽을 것입니다). "testName"속성이 "TestOne"인 요소에 대해 "결과"속성의 값이 "통과"또는 "실패"인 횟수를 계산하고 싶습니다. 다음을 사용하여 이것을 달성하고 있습니다.

File1.xml

<container>
    <build>
        <Tests>
            <Results>
                <Result testName="TestOne" outcome="Passed" ></Result>
                <Result testName="TestTwo"  outcome="Passed" ></Result>
            </Results>
        </Tests>    
    </build>
</container>

File2.xml

<container>
    <build>
        <Tests>
            <Results>
                <Result testName="TestOne" outcome="Passed" ></Result>
                <Result testName="TestTwo"  outcome="Failed" ></Result>
            </Results>
        </Tests>    
    </build>
</container>

File3.xml

<container>
    <build>
        <Tests>
            <Results>
                <Result testName="TestOne" outcome="Failed" ></Result>
                <Result testName="TestTwo"  outcome="Failed" ></Result>
            </Results>
        </Tests>    
    </build>
</container>

Index.xml

<?xml-stylesheet type="text/xsl" href="merge3.xsl"?>
<list>
    <entry name="File1.xml" />
    <entry name="File2.xml" />
    <entry name="File3.xml" />
</list>

Merge2.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>

<xsl:template match="/">
    <xsl:for-each select="/list/entry">
        <xsl:apply-templates select="document(@name)/container/build/*[local-name()='Tests']" />
    </xsl:for-each>
</xsl:template>

<xsl:template match="*[local-name()='Results']">
    <xsl:variable name="name" select="'TestOne'" />
    <xsl:variable name="totalPassed" select="*[local-name()='Result'][@testName = 'TestOne'][@outcome = 'Passed']" />
    <xsl:variable name="totalFailed" select="*[local-name()='Result'][@testName = 'TestOne'][@outcome = 'Failed']" />

    <h2>Totals</h2>
    <table border="1" cellSpacing="0" cellPadding="5" >
        <tr bgcolor="#9acd32">
            <th>Test Name</th>
            <th>Total Passed</th>
            <th>Total Failed</th>
        </tr>
        <tr>
            <td><xsl:value-of select="$name"/></td>
            <td><xsl:value-of select="count($totalPassed)"/></td>
            <td><xsl:value-of select="count($totalFailed)"/></td>
        </tr>
    </table>
</xsl:template>

</xsl:stylesheet>

결과는 3 개의 합계 테이블을 생성합니다. 내 의도는 모든 XML 문서에서 TestOne이 통과 및 실패한 횟수를 표시하는 하나의 Totals 테이블을 표시하는 것입니다. 각 XML 문서를 읽고 / 선택한 다음 한 번에 하나씩 처리하는 것 같습니다. 처리하기 전에 모든 XML 파일을 읽고 선택하고 싶습니다.

이안 로버츠

당신은 수집 할 수 있는 모든Result 같은 것을 사용하여 세 가지 문서 전역에서 요소를

<xsl:variable name="allResults"
  select="(/ | document('file2.xml') | document('file3.xml'))//Result" />

그런 다음 여기에 술어를 적용하여 관심있는 요소를 계산합니다. 예를 들어

<xsl:value-of select="
  count($allResults[@testName = 'TestOne'][@outcome = 'Failed'])" />

고정 된 파일 이름 세트 대신 index.xml결합하려는 모든 파일을 나열 하는 기본 파일 이있는 경우 , 예를 들면 다음과 같습니다.

<list>
    <entry name="File1.xml" />
    <entry name="File2.xml" />
    <entry name="File3.xml" />
</list>

그런 다음이 색인을 스타일 시트의 기본 입력으로 사용할 수 있으며 allResults변수는 다음 같습니다.

<xsl:variable name="allResults"
  select="document(/list/entry/@name)//Result" />

노드 집합을 document함수에 전달하면 각 노드의 문자열 값을 차례로 받아로드 할 파일의 URI로 처리하여 결과 문서 루트 노드 집합반환합니다 .

여기에 완전한 예가 있습니다.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>

  <xsl:variable name="allResults"
    select="document(/list/entry/@name)//Result" />

  <xsl:template match="/">
    <xsl:variable name="name" select="'TestOne'" />

    <h2>Totals</h2>
    <table border="1" cellSpacing="0" cellPadding="5" >
        <tr bgcolor="#9acd32">
            <th>Test Name</th>
            <th>Total Passed</th>
            <th>Total Failed</th>
        </tr>
        <tr>
            <td><xsl:value-of select="$name"/></td>
            <td><xsl:value-of select="count($allResults[@testName = $name]
                                              [@outcome = 'Passed'])"/></td>
            <td><xsl:value-of select="count($allResults[@testName = $name]
                                              [@outcome = 'Failed'])"/></td>
        </tr>
    </table>
  </xsl:template>

</xsl:stylesheet>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XSL을 사용하여 여러 xml 파일 병합

분류에서Dev

Python을 사용하여 특정 디렉토리의 XML 파일에 대한 여러 XML 태그 데이터를 편집하는 방법

분류에서Dev

Python 및 OS를 사용하여 특정 폴더의 모든 csv 파일을 병합하는 방법

분류에서Dev

XML 파일을 병합 한 후 여러 XML 선언과 닫는 태그를 제거하는 방법은 무엇입니까?

분류에서Dev

grep을 사용하여 일부 문자를 제거한 후 파일의 모든 값을 인쇄합니다.

분류에서Dev

Pandas Python을 사용하여 일부 열이 동일한 경우 데이터를 병합하는 방법

분류에서Dev

여러 xml 파일을 병합하고 한 번에 요소를 삽입하여 xslt를 사용하여 업데이트 된 xml 출력

분류에서Dev

여러 xml 파일을 병합하고 한 번에 요소를 삽입하여 xslt를 사용하여 업데이트 된 xml 출력

분류에서Dev

Python Pandas를 사용하여 여러 행을 csv 파일의 한 행에 병합

분류에서Dev

가능한 모든 조합 (2, 3, 다중 클래스)의 평가를 위해 여러 데이터 세트를 병합하는 루프를 만드는 방법

분류에서Dev

Scala를 사용하여 XML 파일의 모든 하위 및 하위 하위 항목을 가져 오는 방법

분류에서Dev

여러 값이있는 문자열을 변환하고 동일한 키를 사용하여 데이터 병합

분류에서Dev

XSLT를 사용하여 중복없이 여러 xml 파일의 데이터 병합

분류에서Dev

FLWOR 쿼리를 사용하여 XML 파일의 요소에서 해당 데이터를 병합하는 방법은 무엇입니까?

분류에서Dev

여러 열의 데이터를 기반으로 두 파일을 병합하는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 xml 파일을 처리하는 더 빠른 방법

분류에서Dev

가라테를 사용하여 모의 서버에서 여러 기능 파일을 병합하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 두 목록의 가능한 모든 값 조합을 사용하여 방정식을 풀기위한 일반화 된 방법을 모색

분류에서Dev

동일한 ID를 사용하여 배열을 병합하는 방법

분류에서Dev

동일한 데이터 프레임의 여러 행을 병합하는 방법은 무엇입니까? 또는 파이썬에서 동일한 키 쌍의 여러 값을 병합하는 방법은 무엇입니까?

분류에서Dev

codeigniter에서 동일한 이름의 여러 입력을 사용하여 데이터를 삽입하는 방법

분류에서Dev

bash를 사용하여 한 줄의 모든 숫자와 파일의 모든 줄의 평균을 구합니다.

분류에서Dev

JQuery를 사용하여 모든 '.xml'파일을 나열하기위한 경로 이름을 설정하는 방법

분류에서Dev

JDOM을 사용하여 동일한 이름으로 동일한 레벨의 모든 xml 요소를 작성하고 가져 오는 방법

분류에서Dev

데이터 격리를 위해 여러 개의 동일한 테이블이있는 모델을 사용하는 방법은 무엇입니까?

분류에서Dev

sed를 사용하여 xml 파일의 내용을 주석 처리하는 방법은 무엇입니까?

분류에서Dev

Grunt 및 / 또는 Gulp를 사용하여 여러 파일을 여러 출력으로보고 처리하는 방법 (동일한 방법)?

분류에서Dev

파이썬을 사용하여 동일한 이름을 가진 요소의 xml 데이터를 구문 분석하는 방법

분류에서Dev

파이썬을 사용하여 여러 json 파일을 1로 병합하는 방법

Related 관련 기사

  1. 1

    XSL을 사용하여 여러 xml 파일 병합

  2. 2

    Python을 사용하여 특정 디렉토리의 XML 파일에 대한 여러 XML 태그 데이터를 편집하는 방법

  3. 3

    Python 및 OS를 사용하여 특정 폴더의 모든 csv 파일을 병합하는 방법

  4. 4

    XML 파일을 병합 한 후 여러 XML 선언과 닫는 태그를 제거하는 방법은 무엇입니까?

  5. 5

    grep을 사용하여 일부 문자를 제거한 후 파일의 모든 값을 인쇄합니다.

  6. 6

    Pandas Python을 사용하여 일부 열이 동일한 경우 데이터를 병합하는 방법

  7. 7

    여러 xml 파일을 병합하고 한 번에 요소를 삽입하여 xslt를 사용하여 업데이트 된 xml 출력

  8. 8

    여러 xml 파일을 병합하고 한 번에 요소를 삽입하여 xslt를 사용하여 업데이트 된 xml 출력

  9. 9

    Python Pandas를 사용하여 여러 행을 csv 파일의 한 행에 병합

  10. 10

    가능한 모든 조합 (2, 3, 다중 클래스)의 평가를 위해 여러 데이터 세트를 병합하는 루프를 만드는 방법

  11. 11

    Scala를 사용하여 XML 파일의 모든 하위 및 하위 하위 항목을 가져 오는 방법

  12. 12

    여러 값이있는 문자열을 변환하고 동일한 키를 사용하여 데이터 병합

  13. 13

    XSLT를 사용하여 중복없이 여러 xml 파일의 데이터 병합

  14. 14

    FLWOR 쿼리를 사용하여 XML 파일의 요소에서 해당 데이터를 병합하는 방법은 무엇입니까?

  15. 15

    여러 열의 데이터를 기반으로 두 파일을 병합하는 방법은 무엇입니까?

  16. 16

    PHP를 사용하여 xml 파일을 처리하는 더 빠른 방법

  17. 17

    가라테를 사용하여 모의 서버에서 여러 기능 파일을 병합하는 방법은 무엇입니까?

  18. 18

    파이썬에서 두 목록의 가능한 모든 값 조합을 사용하여 방정식을 풀기위한 일반화 된 방법을 모색

  19. 19

    동일한 ID를 사용하여 배열을 병합하는 방법

  20. 20

    동일한 데이터 프레임의 여러 행을 병합하는 방법은 무엇입니까? 또는 파이썬에서 동일한 키 쌍의 여러 값을 병합하는 방법은 무엇입니까?

  21. 21

    codeigniter에서 동일한 이름의 여러 입력을 사용하여 데이터를 삽입하는 방법

  22. 22

    bash를 사용하여 한 줄의 모든 숫자와 파일의 모든 줄의 평균을 구합니다.

  23. 23

    JQuery를 사용하여 모든 '.xml'파일을 나열하기위한 경로 이름을 설정하는 방법

  24. 24

    JDOM을 사용하여 동일한 이름으로 동일한 레벨의 모든 xml 요소를 작성하고 가져 오는 방법

  25. 25

    데이터 격리를 위해 여러 개의 동일한 테이블이있는 모델을 사용하는 방법은 무엇입니까?

  26. 26

    sed를 사용하여 xml 파일의 내용을 주석 처리하는 방법은 무엇입니까?

  27. 27

    Grunt 및 / 또는 Gulp를 사용하여 여러 파일을 여러 출력으로보고 처리하는 방법 (동일한 방법)?

  28. 28

    파이썬을 사용하여 동일한 이름을 가진 요소의 xml 데이터를 구문 분석하는 방법

  29. 29

    파이썬을 사용하여 여러 json 파일을 1로 병합하는 방법

뜨겁다태그

보관