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

Ashok.N

다음 XML이 있습니다.

 <?xml version="1.0" encoding="UTF-8"?>
<typeNames xmlns="http://www.dsttechnologies.com/awd/rest/v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <typeName recordType="case" href="awdServer/awd/services/v1/businessareas/SAMPLEBA/types/SAMPLECASE">SAMPLECASE</typeName>
   <typeName recordType="folder" href="awdServer/awd/services/v1/businessareas/SAMPLEBA/types/SAMPLEFLD">SAMPLEFLD</typeName>
   <typeName recordType="source" href="awdServer/awd/services/v1/businessareas/SAMPLEBA/types/SAMPLEST">SAMPLEST</typeName>
   <typeName recordType="transaction" href="awdServer/awd/services/v1/businessareas/SAMPLEBA/types/SAMPLEWT">SAMPLEWT</typeName>
</typeNames>

XSLT를 사용하여 아래와 같이 xml 위의 변환을 원합니다.

 <response>
         <results>

               <source>
                  SAMPLEST
               </source>

         </results>
      </response>
   </xsl:template>

입력 xml에서 출력 xml로 소스를 가져오고 싶습니다.

다음 xml로 시도하고 있지만 필요한 출력 xml을 가져올 수 없습니다.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:v="http://www.dsttechnologies.com/awd/rest/v1" version="2.0" exclude-result-prefixes="v">
   <xsl:output method="xml" version="1.0" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
   <xsl:strip-space elements="*" />
   <!-- identity transform -->
   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()" />
      </xsl:copy>
   </xsl:template>
   <xsl:template match="typeNames">
      <response>
         <results>

               <source>
                  <xsl:value-of select="source" />
               </source>

         </results>
      </response>
   </xsl:template>
</xsl:stylesheet>
uL1

I. 입력 XML의 네임 스페이스

<typeNames xmlns="http://www.dsttechnologies.com/awd/rest/v1"...

xmlnsself + 모든 자식 노드를 네임 스페이스에 넣습니다. 이 네임 스페이스에는 접두사가 필요하지 않습니다.

II. XSLT의 네임 스페이스

... xmlns:v="http://www.dsttechnologies.com/awd/rest/v1"...

네임 스페이스 (소스와 동일한 URI) 앞에를 붙 v였으므로 xpath에도이 접두사를 작성해야합니다.

<xsl:template match="v:typeNames">

[XSLT 2.0 : xpath-default-namespace="uri"스타일 시트 섹션에 추가 하여 모든 xpath-expression에 대한 기본 네임 스페이스를 정의 할 수도 있습니다 . 따라서 네임 스페이스를 접두사로 지정할 필요가 없습니다.]

III. 주어진 입력 xml 추측

<xsl:value-of select="source" /> -> <typeName recordType="source"..>SAMPLEST</typeName>

표시된 xml-node를 선택하려면 다음 중 하나를 작성해야합니다.

absolute, without any context node:
 /v:typeNames/v:typeName[@recordType = 'source']

on context-node typeNames:
 v:typeName[@recordType = 'source']

[ <xsl:value-of select="..."/>텍스트 노드를 반환합니다. 예 : "SAMPLEST"]


편집하다:

태그가 두 개 있으면 어떨까요?

가장 먼저해야 할 일 : <xsl:value-ofXSLT 1에서는 1 개의 노드에서만 작동 할 수 있습니다! xpath 표현식이 둘 이상의 노드와 일치하면 첫 번째 노드 만 처리합니다!

다음과 같이 해결하십시오.

...
<results>
    <xsl:apply-templates select="v:typeName[@recordType = 'source']"/>
</results>
...

<xsl:template match="v:typeName[@recordType = 'source']">
    <source>
        <xsl:value-of select="."/>
    </source>
</xsl:template>

apply-templatesresults모든 검색 typeName..source. 일치하는 템플릿은 해당 노드를 수신하고 xml을 만듭니다 <source>....

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

soapEnvolpe 및 네임 스페이스없이 xml을 하나로 변환하고 xslt를 사용하여 내부 요소에 네임 스페이스 추가

분류에서Dev

XSLT를 사용하여 네임 스페이스 변경-XML의 모든 속성을 복사하지 않음

분류에서Dev

xslt를 사용하여 xml에서 네임 스페이스를 변경하는 방법

분류에서Dev

네임 스페이스를 제외하는 XSLT 변환

분류에서Dev

네임 스페이스는 xslt가 xml을 html로 변환하는 것을 방지합니다.

분류에서Dev

xml.etree.ElementTree.parse가 네임 스페이스 요소를 소문자로 변환하는 이유

분류에서Dev

PHP를 사용하여 네임 스페이스로 XML 타겟팅

분류에서Dev

네임 스페이스를 사용한 들여 쓰기 변환

분류에서Dev

XSLT로 복사 할 때 XML 네임 스페이스 제거

분류에서Dev

XSLT를 사용하여 XML에서 접두사 및 네임 스페이스를 바꾸는 방법

분류에서Dev

XSLT를 사용하여 xml에서 네임 스페이스 및 부모 노드를 제거하려면

분류에서Dev

XSLT를 사용하여 XML 파일에 특정 네임 스페이스가 포함되어 있는지 확인

분류에서Dev

XSLT를 사용하여 XML의 특정 노드에 네임 스페이스 추가

분류에서Dev

특정 XML 네임 스페이스를 사용하여 C #에서 XML 생성

분류에서Dev

xslt를 사용하여 요소에 변수 네임 스페이스를 추가하는 방법

분류에서Dev

R에서 XML 패키지를 사용하여 네임 스페이스로 XML 구문 분석

분류에서Dev

XSLT에서 네임 스페이스를 사용하여 가변 길이 배열 반복

분류에서Dev

네임 스페이스를 사용하여 SOAP xml 구문 분석

분류에서Dev

XMLDocument에서 네임 스페이스를 사용하여 XML 요소 만들기

분류에서Dev

PHP에서 네임 스페이스를 사용하여 XML 문서 생성

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

StAX를 사용하여 속성 네임 스페이스를 포함하는 문자열로 XML 요소 추출

분류에서Dev

속성 변환과 함께 네임 스페이스 접두사를 변경하는 XSLT

분류에서Dev

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

분류에서Dev

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

분류에서Dev

요소 및 네임 스페이스를 사용하여 Pandas로 XML 구문 분석 속도 향상

분류에서Dev

Python에서 ElementTree를 사용하여 네임 스페이스로 XML 구문 분석

Related 관련 기사

  1. 1

    soapEnvolpe 및 네임 스페이스없이 xml을 하나로 변환하고 xslt를 사용하여 내부 요소에 네임 스페이스 추가

  2. 2

    XSLT를 사용하여 네임 스페이스 변경-XML의 모든 속성을 복사하지 않음

  3. 3

    xslt를 사용하여 xml에서 네임 스페이스를 변경하는 방법

  4. 4

    네임 스페이스를 제외하는 XSLT 변환

  5. 5

    네임 스페이스는 xslt가 xml을 html로 변환하는 것을 방지합니다.

  6. 6

    xml.etree.ElementTree.parse가 네임 스페이스 요소를 소문자로 변환하는 이유

  7. 7

    PHP를 사용하여 네임 스페이스로 XML 타겟팅

  8. 8

    네임 스페이스를 사용한 들여 쓰기 변환

  9. 9

    XSLT로 복사 할 때 XML 네임 스페이스 제거

  10. 10

    XSLT를 사용하여 XML에서 접두사 및 네임 스페이스를 바꾸는 방법

  11. 11

    XSLT를 사용하여 xml에서 네임 스페이스 및 부모 노드를 제거하려면

  12. 12

    XSLT를 사용하여 XML 파일에 특정 네임 스페이스가 포함되어 있는지 확인

  13. 13

    XSLT를 사용하여 XML의 특정 노드에 네임 스페이스 추가

  14. 14

    특정 XML 네임 스페이스를 사용하여 C #에서 XML 생성

  15. 15

    xslt를 사용하여 요소에 변수 네임 스페이스를 추가하는 방법

  16. 16

    R에서 XML 패키지를 사용하여 네임 스페이스로 XML 구문 분석

  17. 17

    XSLT에서 네임 스페이스를 사용하여 가변 길이 배열 반복

  18. 18

    네임 스페이스를 사용하여 SOAP xml 구문 분석

  19. 19

    XMLDocument에서 네임 스페이스를 사용하여 XML 요소 만들기

  20. 20

    PHP에서 네임 스페이스를 사용하여 XML 문서 생성

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    StAX를 사용하여 속성 네임 스페이스를 포함하는 문자열로 XML 요소 추출

  25. 25

    속성 변환과 함께 네임 스페이스 접두사를 변경하는 XSLT

  26. 26

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

  27. 27

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

  28. 28

    요소 및 네임 스페이스를 사용하여 Pandas로 XML 구문 분석 속도 향상

  29. 29

    Python에서 ElementTree를 사용하여 네임 스페이스로 XML 구문 분석

뜨겁다태그

보관