Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XSLT将XML转换为XML并删除特定元素的换行符_Xml_Xslt - Fatal编程技术网

使用XSLT将XML转换为XML并删除特定元素的换行符

使用XSLT将XML转换为XML并删除特定元素的换行符,xml,xslt,Xml,Xslt,您好,我有一个问题涉及到使用XSLT将输入XML转换为输出XML,并删除一些元素的换行符和缩进 我想举例说明我的问题: 输入: <LISTESTOF> <ICSGROUP> <ICSNUM>1</ICSNUM> <ICSDKNAME>A1</ICSDKNAME> <ICSUKNAME>B2</ICSUKNAME> </ICSGROUP> <ICSG

您好,我有一个问题涉及到使用XSLT将输入XML转换为输出XML,并删除一些元素的换行符和缩进

我想举例说明我的问题:

输入:

<LISTESTOF>
  <ICSGROUP>
    <ICSNUM>1</ICSNUM>
    <ICSDKNAME>A1</ICSDKNAME>
    <ICSUKNAME>B2</ICSUKNAME>
  </ICSGROUP>
  <ICSGROUP>
    <ICSNUM>2</ICSNUM>
    <ICSDKNAME>B1</ICSDKNAME>
    <ICSUKNAME>B2</ICSUKNAME>
  </ICSGROUP>
</LISTESTOF>

1.
A1
地下二层
2.
地下一层
地下二层
输出:

<LISTESTOF>
<ICSGROUP><ICSNUM>1</ICSNUM>
<ICSDKNAME>A1</ICSDKNAME>
<ICSUKNAME>B2</ICSUKNAME></ICSGROUP>
<ICSGROUP><ICSNUM>2</ICSNUM>
<ICSDKNAME>B1</ICSDKNAME>
<ICSUKNAME>B2</ICSUKNAME></ICSGROUP>
</LISTESTOF>

1.
A1
地下二层
2.
地下一层
地下二层
到目前为止,我的XSLT文件:

<?xml version="1.0" encoding="UTF-8"?>
<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="no"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/">
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="LISTESTOF">
             <xsl:value-of select="'&#xA;'" /><LISTESTOF><xsl:apply-templates select="ICSGROUP"/></LISTESTOF>
    </xsl:template>

    <xsl:template match="ICSGROUP">
              <xsl:value-of select="'&#xA;'" /><ICSGROUP><xsl:apply-templates select="ICSNUM"/><xsl:value-of select="'&#xA;'" /><xsl:apply-templates select="ICSDKNAME"/><xsl:value-of select="'&#xA;'" /><xsl:apply-templates select="ICSUKNAME"/></ICSGROUP>
    </xsl:template>

    <xsl:template match="ICSNUM">
        <ICSNUM><xsl:value-of select="."/></ICSNUM>
    </xsl:template>

    <xsl:template match="ICSDKNAME">
        <ICSDKNAME><xsl:value-of select="."/></ICSDKNAME>
    </xsl:template>

    <xsl:template match="ICSUKNAME">
        <ICSUKNAME><xsl:value-of select="."/></ICSUKNAME>
    </xsl:template>


    </xsl:stylesheet>

有更清洁的解决方案吗?未定义的元素会发生什么情况?他们会消失吗?有什么建议吗?提前谢谢你

我将首先删除所有仅限空白的文本节点

<xsl:strip-space elements="*"/>
首先,我将删除所有仅限空白的文本节点

<xsl:strip-space elements="*"/>
首先,我将删除所有仅限空白的文本节点

<xsl:strip-space elements="*"/>
首先,我将删除所有仅限空白的文本节点

<xsl:strip-space elements="*"/>

使用专用的漂亮打印机可能会更容易,例如。你说得对,它会更容易。但我的客户不想使用外部软件将其xml数据导入InDesign文档。InDesign具有在导入过程中使用外部xslt文件转换输入xml的功能。因此,我不知何故被xslt语言及其可能性所束缚:(使用专用的漂亮打印机可能更容易,例如。你是对的,它会更容易。但我的客户不想使用外部软件将其xml数据导入InDesign文档。InDesign具有在导入过程中使用外部xslt文件转换输入xml的功能。因此,我不知道为什么使用xslt语言及其可能性:(使用专用的漂亮打印机可能更容易,例如。你是对的,它会更容易。但我的客户不想使用外部软件将其xml数据导入InDesign文档。InDesign具有在导入过程中使用外部xslt文件转换输入xml的功能。因此,我不知道为什么使用xslt语言及其可能性:(使用专用的漂亮打印机可能更容易,例如。你是对的,它会更容易。但我的客户不想使用外部软件将其xml数据导入InDesign文档。InDesign具有在导入过程中使用外部xslt文件转换输入xml的功能。因此,我不知道为什么了解xslt语言及其可能性:(完美解决方案!谢谢:)完美解决方案!谢谢:)完美解决方案!谢谢:)完美解决方案!谢谢:)完美解决方案!谢谢:)