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>
당신은 라인을 제거해야
<xsl:template match="ComponentDetails/node()"/>
ComponentDetails
요소 의 모든 하위 태그를 제거하기 때문 입니다.
또한 전역 적으로 고유 한을 원하면 요소를 ID
다음으로 변경하십시오.<xsl:number/>
<xsl:number level="any" />
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения