Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Xml 根据节点名称插入制表符和CR/LF_Xml_Xslt_Formatting_Xslt 1.0_Xmlnode - Fatal编程技术网

Xml 根据节点名称插入制表符和CR/LF

Xml 根据节点名称插入制表符和CR/LF,xml,xslt,formatting,xslt-1.0,xmlnode,Xml,Xslt,Formatting,Xslt 1.0,Xmlnode,我有一个包含运动结果的XML文件,但它们需要格式化和组织,以便更好地阅读/理解,我认为格式化应该基于节点名称(可能测试节点名称?),比如如果名称为“tab”,则插入一个选项卡。。。我的xml文件如下所示: <?xml version="1.0"?> <Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&g

我有一个包含运动结果的XML文件,但它们需要格式化和组织,以便更好地阅读/理解,我认为格式化应该基于节点名称(可能测试节点名称?),比如如果名称为“tab”,则插入一个选项卡。。。我的xml文件如下所示:

   <?xml version="1.0"?>
    <Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Header>
      </Header>
      <Body><p><p><b><u>Wednesday 14 December 2016</u></b></p><p></p><p>10:30<tab>Atletico Nacional  </tab><tab>v</tab><tab>Kashima Antlers  </tab><i><tab><tab>(Suita City Football Stadium)</tab></tab></i><b><tab><tab></tab></tab></b></p></p><p><p><b><u>Thursday 15 December 2016</u></b></p><p></p><p>10:30<tab>Club America  </tab><tab>v</tab><tab>Real Madrid  </tab><i><tab><tab>(Yokohama International Stadium)</tab></tab></i><b><tab><tab></tab></tab></b></p></p></Body>
    </Message>

2016年12月14日星期三

10:30马竞国家队鹿角队(Suita市足球场)

2016年12月15日星期四

<10:30美国皇家马德里俱乐部(横滨国际体育场)

预期的结果应该是这样的:

<?xml version="1.0" encoding="UTF-16" standalone="no"?>  
<!DOCTYPE NEWS SYSTEM "structure.dtd">  
<OBJECT>  
<ID>12345</ID>  
<HEADER>SPORTS NEWS</HEADER>  
<OBJECT_BODY>  
Wednesday 14 December 2016  
10:30 Atletico Nacional v Kashima Antlers *(Suita City Football Stadium)*  
Thursday 15 December 2016  
10:30 Club America v Real Madrid *(Yokohama International Stadium)*  
</OBJECT_BODY>  
</OBJECT>

12345
体育新闻
2016年12月14日星期三
10:30马竞对鹿岛鹿角*(Suita市足球场)*
2016年12月15日星期四
10:30美国俱乐部诉皇家马德里*(横滨国际体育场)*

非常感谢您的帮助和支持,非常感谢

我不能说我完全了解您是如何达到预期输出的,但请尝试将此作为您的出发点:

XSLT1.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="*"/>

<xsl:template match="/Message">
    <OBJECT>  
        <ID>12345</ID>  
        <HEADER>SPORTS NEWS</HEADER>  
        <xsl:apply-templates select="Body"/>
    </OBJECT>  
</xsl:template>

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

<xsl:template match="p">
    <xsl:text>&#10;</xsl:text>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="tab">
    <xsl:text>&#9;</xsl:text>
    <xsl:apply-templates/>
</xsl:template>

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

</xsl:stylesheet>

12345
体育新闻


	
*
*

如有必要,添加其他模板来处理
b
u
元素。

您的输出是文本文件吗?您打算如何具体格式化它?请不要在评论中发布代码。编辑您的问题并将预期的输出作为代码*发布。@michael.hor257k,我的输出方法是XML,基本上我尝试将此XML文件转换为另一个基于模式文件的XML文件,以供特定新闻系统阅读。(我更新了我的问题)我在这里放的示例只是整个XML文档的一小部分,我的XSLT文件也是一张很长的纸,这就是为什么我不能在这里复制它们的原因。。。但是我从你的回答中得到了这个想法,现在它非常有效。。。非常感谢您有用的回答和支持。如果您能帮助我,还有一件事是可选的,那就是如何将“i”节点文本格式设置为“斜体”或“粗体”?我尝试过很多文本格式,但都不适合我。@JohnMiller XML是纯文本格式;没有办法将其“格式化”为斜体或粗体。您唯一能做的就是添加某种标记。