【发布时间】:2022-01-22 00:37:04
【问题描述】:
我有一个这样的xml
<?xml version="1.0" encoding="UTF-8"?>
<chapter>
<title>Partial Interests</title>
<division>
<title>5.01Concurrent Interests</title>
<sections>
<title>[1]In General</title>
<paragraphs>
<paragraph>An owner of property periods.</paragraph>
<paragraph>On other occasions, be co-owned in </paragraph>
</paragraphs>
</sections>
</division>
</chapter>
我需要的预期xml是
<CHAPTER N='5' STATUS='MAIN' TYPE='CHAPTER' MEDIA='ALL' FATCA='NO'>
<MARKER MRKDATE="20210510" MRKEID="VAL:450.1" MRKTIME="14431916" MRKTYPE="LD DU"/>
<HEAD>Partial Interests - Tracer Bullet phase 2</HEAD>
<RHD>PARTIAL INTERESTS</RHD>
<SUPPRHD>2021 CUMULATIVE SUPPLEMENT NO. 1</SUPPRHD>
<RELEASE>Copyright © December 2003</RELEASE>
<SYNOPSIS/>
<CHAP-INTRO STATUS="MAIN">
<MARKER MRKDATE="20210510" MRKEID="VAL:450.2" MRKTIME="14431916" MRKTYPE="DU"/>
<NEW-TEXT OPINSTLO="YES" SUPPNO="2012-2">
<INSTRUC BREAK="0" CTD="0" PLURAL="N">Chapter 5 was revised effective December 2003. Developments occurring after that date appear below.</INSTRUC>
</NEW-TEXT>
</CHAP-INTRO>
<?atom aid="VAL:451" date="20210510" time="14431916" status="EDITOR"?>
<PARA1 CTD="0" D="5.01" FATCA="NO" STATUS="MAIN" TYPE="NONE" UID="5.01">
<MARKER MRKDATE="20210510" MRKEID="VAL:451.1" MRKTIME="14431916" MRKTYPE="LD DU"/>
<HEAD>Concurrent Interests</HEAD>
<PARA2 CTD="0" D="1" STATUS="MAIN" TYPE="NONE" UID="5.01[1]">
<MARKER MRKDATE="20210510" MRKEID="VAL:451.2" MRKTIME="14431916" MRKTYPE="LD DU"/>
<HEAD>In General</HEAD>
<P>An owner of property periods.</P><P>On other occasions, be co-owned in</p></PARA2></PARA1></CHAPTER>
我开发的xsl是
<?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:strip-space elements="*"/>
<xsl:template match="node()|@*" mode="pretrans">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="chapter">
<CHAPTER N='5' STATUS='MAIN' TYPE='CHAPTER' MEDIA='ALL' FATCA='NO'>
<MARKER MRKDATE="20210510" MRKEID="VAL:450.1" MRKTIME="14431916" MRKTYPE="LD DU"/> <xsl:apply-templates/>
<SUPPRHD>2021 CUMULATIVE SUPPLEMENT NO. 1</SUPPRHD>
<RELEASE>Copyright © December 2003</RELEASE>
<SYNOPSIS/>
<CHAP-INTRO STATUS="MAIN">
<MARKER MRKDATE="20210510" MRKEID="VAL:450.2" MRKTIME="14431916" MRKTYPE="DU"/>
<NEW-TEXT OPINSTLO="YES" SUPPNO="2012-2">
<INSTRUC BREAK="0" CTD="0" PLURAL="N">Chapter 5 was revised effective December 2003. Developments occurring after that date appear below.</INSTRUC>
</NEW-TEXT>
</CHAP-INTRO>
<PARA1 CTD="0" D="5.01" FATCA="NO" STATUS="MAIN" TYPE="NONE" UID="5.01">
<MARKER MRKDATE="20210510" MRKEID="VAL:451.1" MRKTIME="14431916" MRKTYPE="LD DU"/>
<xsl:apply-templates select="division" />
<PARA2 CTD="0" D="1" STATUS="MAIN" TYPE="NONE" UID="5.01[1]">
<MARKER MRKDATE="20210510" MRKEID="VAL:451.2" MRKTIME="14431916" MRKTYPE="LD DU"/>
<xsl:apply-templates select="sections" />
</PARA2>
</PARA1>
</CHAPTER>
</xsl:template>
<xsl:template match="title">
<HEAD><xsl:apply-templates/></HEAD>
</xsl:template>
<xsl:template match="paragraph">
<p><xsl:apply-templates/></p>
</xsl:template>
</xsl:stylesheet>
我得到的输出 xml 而不是预期的输出是
<?xml version="1.0" encoding="UTF-8"?><CHAPTER N="5" STATUS="MAIN" TYPE="CHAPTER" MEDIA="ALL" FATCA="NO"><MARKER MRKDATE="20210510" MRKEID="VAL:450.1" MRKTIME="14431916" MRKTYPE="LD DU"/><HEAD>Partial Interests</HEAD><HEAD>5.01Concurrent Interests</HEAD><HEAD>[1]In General</HEAD><p>An owner of property periods.</p><p>On other occasions, be co-owned in </p><SUPPRHD>2021 CUMULATIVE SUPPLEMENT NO. 1</SUPPRHD><RELEASE>Copyright © December 2003</RELEASE><SYNOPSIS/><CHAP-INTRO STATUS="MAIN"><MARKER MRKDATE="20210510" MRKEID="VAL:450.2" MRKTIME="14431916" MRKTYPE="DU"/><NEW-TEXT OPINSTLO="YES" SUPPNO="2012-2"><INSTRUC BREAK="0" CTD="0" PLURAL="N">Chapter 5 was revised effective December 2003. Developments occurring after that date appear below.</INSTRUC></NEW-TEXT></CHAP-INTRO><PARA1 CTD="0" D="5.01" FATCA="NO" STATUS="MAIN" TYPE="NONE" UID="5.01"><MARKER MRKDATE="20210510" MRKEID="VAL:451.1" MRKTIME="14431916" MRKTYPE="LD DU"/><PARA2 CTD="0" D="1" STATUS="MAIN" TYPE="NONE" UID="5.01[1]"><MARKER MRKDATE="20210510" MRKEID="VAL:451.2" MRKTIME="14431916" MRKTYPE="LD DU"/></PARA2></PARA1></CHAPTER>
对于我开发的 xsl 没有正确获取 para1 和 par2 并且剩余数据位于底部而不是开始,所以我需要对我的 xsl 进行哪些更改才能获得预期的输出。
【问题讨论】:
-
请将代码减少到演示问题所需的最低限度 - 请参阅:minimal reproducible example。
-
mode="pretrans"在那里做什么,我看不出该模式有什么用处。 -
为什么代码使用
version="2.0",问题却被标记为xslt-1.0?
标签: xml xslt xslt-1.0 transformation