XML 파일 업데이트 및 XSLT를 사용하여 태그에 ID 할당

금성

XML 파일을 업데이트하고 태그에 ID를 할당하고 싶습니다. 내 XML 파일에는 "ComponentDetails"라는 태그가 있습니다. 동일한 이름의 태그가 여러 개 있으므로 ID를 기반으로 특정 값을 선택할 수 있도록 ID를 할당하려고합니다.
다음은 내 XML 샘플입니다.

    <?xml version="1.0" encoding="UTF-8"?><root>
    <PayrunDetails>
        <PayrunNumber>000777</PayrunNumber>
        <PaidDate>2018-05-15</PaidDate>
    </PayrunDetails>
    <PayLocation>
        <LocationCode>ACT</LocationCode>
        <LocationDescription>ACT</LocationDescription>
        <CompanyDetails>
            <CCode>APPLE</CCode>
            <CName>APPLE Limited</CName>
            <Payslip>
                <StaffNumber>12345</StaffNumber>
                <BankDetails>
                    <BankAccountNo>121212</BankAccountNo>
                </BankDetails>
                <PayDetails>
                    <PayType>NORMAL</PayType>
                    <AmountGross>9999</AmountGross>
                    <ComponentDetails>
                        <ComponentType>SALARY</ComponentType>
                        <Amount>1999</Amount>
                        <YTDAmount>10616</YTDAmount>
                    </ComponentDetails>
                    <ComponentDetails>
                        <ComponentType>TAXABLE</ComponentType>
                        <Amount>505</Amount>
                        <YTDAmount>7703</YTDAmount>
                    </ComponentDetails>
                </PayDetails>
            </Payslip>
            <Payslip>
                <StaffNumber>45555</StaffNumber>
                <BankDetails>
                    <BankAccountNo>131313</BankAccountNo>
                </BankDetails>
                <PayDetails>
                    <PayType>NORMAL</PayType>
                    <AmountGross>9999</AmountGross>
                    <ComponentDetails>
                        <ComponentType>SALARY</ComponentType>
                        <Amount>1999</Amount>
                        <YTDAmount>10616</YTDAmount>
                    </ComponentDetails>
                    <ComponentDetails>
                        <ComponentType>GROSS</ComponentType>
                        <Amount>7305</Amount>
                        <YTDAmount>76703</YTDAmount>
                    </ComponentDetails>
                    <ComponentDetails>
                        <ComponentType>TAXABLE</ComponentType>
                        <Amount>305</Amount>
                        <YTDAmount>6703</YTDAmount>
                    </ComponentDetails>
                </PayDetails>
            </Payslip>
        </CompanyDetails>
    </PayLocation>
</root>

위의 XML 파일에서 ComponentDetails 태그 내에 존재하는 Amount, YTDAmount 하위 태그 값을 선택하고 싶습니다. 어떻게 든 ComponentDetails 태그에 ID를 할당했지만 안타깝게도 새로 생성 된 XML 파일에없는 하위 태그가 내부에 존재합니다.
내 XSL 파일은 다음과 같습니다.

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

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="ComponentDetails">
        <xsl:copy>
          <xsl:attribute name="ID">
            <xsl:number/>
          </xsl:attribute>
          <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
</xsl:template>
</xsl:stylesheet>

그래서 pls는 태그 ID로 XML 파일을 만드는 솔루션을 제공합니다. 저는 XSLT를 처음 사용하므로 잠재적 인 초보자 질문을 용서해주십시오. 여기에서 모든 지침을 주시면 감사하겠습니다.
미리 감사드립니다.

다음과 같은 변경을 수행했으며 작동합니다.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="PayDetails/ComponentDetails">
    <xsl:copy>
      <xsl:attribute name="ID">
        <xsl:number/>
      </xsl:attribute>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
zx485

당신은 라인을 제거해야

<xsl:template match="ComponentDetails/node()"/>

ComponentDetails요소 의 모든 하위 태그를 제거하기 때문 입니다.


또한 전역 적으로 고유 한을 원하면 요소를 ID다음으로 변경하십시오.<xsl:number/>

<xsl:number level="any" />

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Python XML 파일 생성은 루프를 사용하고 하위 요소에 값을 할당합니다.

Ant xmltask 또는 perl 스크립팅을 사용하여 두 개의 xml 파일 사이에 항목 추가 / 제거 / 업데이트

Powershell 스크립트를 사용하여 XML의 각 태그에 네임 스페이스 추가

awk를 사용하여 두 파일을 비교할 때 파일 이름에 구문 오류가 있습니다.

XML 파일 읽기 및 PowerShell을 사용하여 논리 작업을 수정하는 방법

PowerShell을 사용하여 단일 사용자에게 여러 o365 라이선스 할당

.json 및 .list 파일의 데이터를 Python을 사용하여 교대로 결합하여 새 JSON 파일로 덤프하는 방법은 무엇입니까?

NodeJS를 사용하여 AWS S3에 여러 파일 업로드

Java 애플리케이션을 사용하여 XML 파일을 처리 할 때 직면하는 문제

replaceWith를 사용하여 여러 div 클래스 및 div ID 내에서 img를 대체하는 방법

C #을 사용하여 Excel 파일에서 메타 데이터를 제거 하시겠습니까?

논리적 인덱싱 및 그룹화를 사용하여 Panda 데이터 프레임에 새 열 만들기

jq를 사용하여 json 파일의 하위 항목을 업데이트하는 방법은 무엇입니까?

Google 드라이브 API를 사용하여 Google 슬라이드 파일을 복사 할 수 없습니다.

사용자 이름 및 비밀번호 요소 ID가 일정하지 않은 경우 사이트 로그인 요청 사용

boost.multiprecision을 사용하여 프로젝트를 컴파일하려고 할 때 C2143 / C2518

테스트를 위해 사이트를 사용하여 가입하려고 할 때마다 이메일 텍스트 상자에 오류가 표시됨

HTML Select 태그를 사용하여 다국어 웹 사이트에서 언어 간 전환

VBA를 사용하여 동적 폴더에 파일 복사

React Native에서 인덱스를 사용하여 useState에서 배열을 업데이트하는 방법

FFMPEG를 사용하여 파일을 변환하고 AWS S3 Nodejs에 업로드

여러 <span> 태그에서 추출하고 BS4를 사용하여 데이터를 그룹화하는 방법은 무엇입니까?

IdentityServer4를 사용하는 단일 클라이언트에서 Bearer 인증 및 OpenIdConnect를 수락 할 때 이상한 동작

URL에서 AD를 사용하여 .desktop 파일 만들기

Live Sass 컴파일을 사용하여 scss를 CSS에 연결

Google 스프레드 시트 + Apps Script : ID를 반복하여 파일 이동

Julia, Pluto.jl 및 PlutoUI.jl의 FilePicker 요소를 사용하여 업로드 된 CSV 파일을 읽는 방법

Azure-DevOPS 릴리스 파이프 라인에서 XML 변환을 사용하여 IIS 배포를 수행하는 방법은 무엇입니까?

ID / 인증이 활성화 된 .Net 5를 사용하여 EF Core에서 데이터 시드 문제

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл