XSLT 노드를 제거하지만 내용은 유지

Micha

노드를 제거하려고하지만 조상 노드에 콘텐츠를 삽입합니다. 이것은 xml입니다.

    <w lemma="comment2" type="adv." ana="comment">comment</w>
<name ref="roland"><w lemma="roland" type="nom propre" ana="roland">roland</w></name>
<w lemma="faire" type="vindps3" ana="fyt"><choice><orig>fyt</orig><reg>fist</reg></choice></w>
<name ref="yvon de montauban"><w lemma="yvon" type="nom propre" ana="yvon">yvon</w>
<w lemma="de" type="prép" ana="de">de</w>

내 소원은 완전히 <reg>삭제하고 태그를 삭제하고 태그 <choice>를 삭제 <orig>하되 그 내용을 <w>태그에 넣는 것 입니다. 누군가 나를 도울 수 있습니까?

xslt는 현재 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
    <xsl:output method="xml"/>
    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:for-each select="./@*">
                <xsl:attribute name="{local-name()}">
                    <xsl:value-of select="."/>
                </xsl:attribute>
            </xsl:for-each>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="div">
        <xsl:element name="{local-name()}">
            <xsl:for-each select="./@*">
                <xsl:attribute name="{local-name()}">
                    <xsl:value-of select="."/>
                </xsl:attribute>
            </xsl:for-each>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="s">
        <xsl:element name="{local-name()}">
            <xsl:for-each select="./@*">
                <xsl:attribute name="{local-name()}">
                    <xsl:value-of select="."/>
                </xsl:attribute>
            </xsl:for-each>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="name">
        <xsl:element name="{local-name()}">
            <xsl:for-each select="./@*">
                <xsl:attribute name="{local-name()}">
                    <xsl:value-of select="."/>
                </xsl:attribute>
            </xsl:for-each>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="pb">
        <xsl:choose>
            <xsl:when test="@ed='bnf'">
                <xsl:element name="{local-name()}">
                    <xsl:for-each select="./@*">
                        <xsl:attribute name="{local-name()}">
                            <xsl:value-of select="."/>
                        </xsl:attribute>
                    </xsl:for-each>
                    <xsl:apply-templates/>
                </xsl:element>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template match="w">
        <xsl:choose>
            <xsl:when test="descendant::orig">
                <xsl:element name="w">
                    <xsl:for-each select="./@*">
                        <xsl:attribute name="{local-name()}">
                            <xsl:value-of select="."/>
                        </xsl:attribute>
                    </xsl:for-each>
                    <xsl:apply-templates/>
                </xsl:element>
            </xsl:when>
            <xsl:when test="descendant::reg">
                    <xsl:apply-templates/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:element name="w">
                    <xsl:for-each select="./@*">
                        <xsl:attribute name="{local-name()}">
                            <xsl:value-of select="."/>
                        </xsl:attribute>
                    </xsl:for-each>
                    <xsl:apply-templates/>
                </xsl:element>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template match="choice"/>
    <xsl:template match="orig">
        <xsl:apply-templates select="*" />
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="reg"/> 
</xsl:stylesheet>

도와 주셔서 감사합니다 :) Micha

michael.hor257k

올바른 형식의 XML 입력이 주어지면 :

<root>
  <w lemma="comment2" type="adv." ana="comment">comment</w>
  <name ref="roland">
    <w lemma="roland" type="nom propre" ana="roland">roland</w>
  </name>
  <w lemma="faire" type="vindps3" ana="fyt">
    <choice>
      <orig>fyt</orig>
      <reg>fist</reg>
    </choice>
  </w>
  <name ref="yvon de montauban">
    <w lemma="yvon" type="nom propre" ana="yvon">yvon</w>
    <w lemma="de" type="prép" ana="de">de</w>
  </name>
</root>

다음 스타일 시트 :

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" 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="choice|orig">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="reg"/>

</xsl:stylesheet>

반환됩니다 :

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <w lemma="comment2" type="adv." ana="comment">comment</w>
   <name ref="roland">
      <w lemma="roland" type="nom propre" ana="roland">roland</w>
   </name>
   <w lemma="faire" type="vindps3" ana="fyt">fyt</w>
   <name ref="yvon de montauban">
      <w lemma="yvon" type="nom propre" ana="yvon">yvon</w>
      <w lemma="de" type="prép" ana="de">de</w>
   </name>
</root>

노트 :

  1. choice랩퍼는 제거되었다;
  2. 의 내용이 orig조상 w노드 의 내용이되었습니다 .
  3. 전체 reg노드가 억제되었습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XSLT : 노드를 유지하는 초과 공백 문자 제거

분류에서Dev

작동하지 않는 XSLT를 사용하여 XML 노드 제거

분류에서Dev

HTML 요소를 제거하지만 내용은 유지

분류에서Dev

부모 폴더를 제거하지만 자식의 내용은 유지

분류에서Dev

HTML 문자열에서 부모 div를 제거하지만 내용은 유지

분류에서Dev

XSLT를 사용하여 유사한 노드를 새 노드로 이동

분류에서Dev

모든 빈 자식 노드를 제거하지만 부모 수준은 유지하는 XML 스타일 시트

분류에서Dev

내부 노드가 다르지만 XSLT를 사용하는 동일한 외부 노드를 사용하는 XML에서 XML로 변환

분류에서Dev

HTMLAgilityPack-노드를 제거하지만 그 가치는 유지

분류에서Dev

jquery를 사용하여 div를 제거하지만 내부에 div 유지

분류에서Dev

XSLT는 자식 노드를 제거하고 구두점과 함께 공백을 유지합니다.

분류에서Dev

XSLT를 사용하여 XML에서 노드 제거

분류에서Dev

RestKit 2.0 RKManagedObjectStore를 제거하지만 NSManagedObjectModel은 유지

분류에서Dev

XSLT를 사용하여 노드 이동

분류에서Dev

XSLT를 사용하여 노드 이동

분류에서Dev

XSLT를 사용하여 예제 XML에서 ID 변환으로 존재하지 않는 노드 복제

분류에서Dev

xslt를 사용하여 xml의 모든 자식 노드 및 노드 값 지우기

분류에서Dev

bash-모든 디렉토리 (및 내용)를 제거하지만 pwd의 파일은 제거하지 않음

분류에서Dev

특정 노드 유형에서 xslt를 사용하여 XML에서 CSV로

분류에서Dev

XML 부모 노드를 제거하는 C #은 빈 노드로 유지됩니다.

분류에서Dev

xslt를 사용하여 xml에서 xml로 제목 유지

분류에서Dev

xslt를 사용하여 xml에서 중복 노드를 제거하는 방법

분류에서Dev

jQuery HTML 요소를 제거하지만 내용은 그대로 둡니다.

분류에서Dev

JIT 내 죽은 코드를 제거하지 않는 이유 - JMH

분류에서Dev

빈 노드를 제거하지만 이미지 태그가있는 노드는 유지

분류에서Dev

tr을 사용하여 문자를 제거하지만 줄 바꿈 유지

분류에서Dev

tr을 사용하여 문자를 제거하지만 줄 바꿈 유지

분류에서Dev

XSLT를 사용하여 두 번째 요소의 중복 노드 제거

분류에서Dev

XSLT를 사용하여 XML에서 유사한 노드에 대한 일반 템플릿 만들기

Related 관련 기사

  1. 1

    XSLT : 노드를 유지하는 초과 공백 문자 제거

  2. 2

    작동하지 않는 XSLT를 사용하여 XML 노드 제거

  3. 3

    HTML 요소를 제거하지만 내용은 유지

  4. 4

    부모 폴더를 제거하지만 자식의 내용은 유지

  5. 5

    HTML 문자열에서 부모 div를 제거하지만 내용은 유지

  6. 6

    XSLT를 사용하여 유사한 노드를 새 노드로 이동

  7. 7

    모든 빈 자식 노드를 제거하지만 부모 수준은 유지하는 XML 스타일 시트

  8. 8

    내부 노드가 다르지만 XSLT를 사용하는 동일한 외부 노드를 사용하는 XML에서 XML로 변환

  9. 9

    HTMLAgilityPack-노드를 제거하지만 그 가치는 유지

  10. 10

    jquery를 사용하여 div를 제거하지만 내부에 div 유지

  11. 11

    XSLT는 자식 노드를 제거하고 구두점과 함께 공백을 유지합니다.

  12. 12

    XSLT를 사용하여 XML에서 노드 제거

  13. 13

    RestKit 2.0 RKManagedObjectStore를 제거하지만 NSManagedObjectModel은 유지

  14. 14

    XSLT를 사용하여 노드 이동

  15. 15

    XSLT를 사용하여 노드 이동

  16. 16

    XSLT를 사용하여 예제 XML에서 ID 변환으로 존재하지 않는 노드 복제

  17. 17

    xslt를 사용하여 xml의 모든 자식 노드 및 노드 값 지우기

  18. 18

    bash-모든 디렉토리 (및 내용)를 제거하지만 pwd의 파일은 제거하지 않음

  19. 19

    특정 노드 유형에서 xslt를 사용하여 XML에서 CSV로

  20. 20

    XML 부모 노드를 제거하는 C #은 빈 노드로 유지됩니다.

  21. 21

    xslt를 사용하여 xml에서 xml로 제목 유지

  22. 22

    xslt를 사용하여 xml에서 중복 노드를 제거하는 방법

  23. 23

    jQuery HTML 요소를 제거하지만 내용은 그대로 둡니다.

  24. 24

    JIT 내 죽은 코드를 제거하지 않는 이유 - JMH

  25. 25

    빈 노드를 제거하지만 이미지 태그가있는 노드는 유지

  26. 26

    tr을 사용하여 문자를 제거하지만 줄 바꿈 유지

  27. 27

    tr을 사용하여 문자를 제거하지만 줄 바꿈 유지

  28. 28

    XSLT를 사용하여 두 번째 요소의 중복 노드 제거

  29. 29

    XSLT를 사용하여 XML에서 유사한 노드에 대한 일반 템플릿 만들기

뜨겁다태그

보관