我有一个包含日期时间信息的数据文件,但我只需要日期或结束的时间。
是否有可能将这些数据转换为只删除我使用XSLT所需的部分?
下面是示例XML:
<sessions>
<session>
<starttime>10/25/2015 7:30:00 AM</starttime>
<endtime>10/25/2015 11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>572</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015 7:30:00 AM</starttime>
<endtime>10/25/2015 11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>572</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015 7:30:00 AM</starttime>
<endtime>10/25/2015 11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>572</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015 7:30:00 AM</starttime>
<endtime>10/25/2015 11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>580</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015 7:30:00 AM</starttime>
<endtime>10/25/2015 5:30:00 PM</endtime>
<sessionname></sessionname>
<sessiontype>Self-Study</sessiontype>
<sessionID>308</sessionID>
<sessionDesc>Self-study in ICU Airway Management</sessionDesc>
</session>
</sessions>
我想创建最后的XML,如下所示:
<sessions>
<session>
<starttime>10/25/2015</starttime>
<endtime>11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>572</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015</starttime>
<endtime>11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>572</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015</starttime>
<endtime>11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>572</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015</starttime>
<endtime>11:30:00 AM</endtime>
<sessionname>Convention Center - 710</sessionname>
<sessiontype>Simulation</sessiontype>
<sessionID>580</sessionID>
<sessionDesc>Certificate of Completion - Hands on Assessment</sessionDesc>
</session>
<session>
<starttime>10/25/2015</starttime>
<endtime>5:30:00 PM</endtime>
<sessionname></sessionname>
<sessiontype>Self-Study</sessiontype>
<sessionID>308</sessionID>
<sessionDesc>Self-study in ICU Airway Management</sessionDesc>
</session>
</sessions>
下面是我首先介绍的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="sessions">
<sessions><xsl:for-each select="session">
<session>
<xsl:apply-templates select="*"/>
</session></xsl:for-each></sessions>
</xsl:template>
<xsl:template match="starttime"><starttime><xsl:value-of select="."/></starttime></xsl:template>
<xsl:template match="endtime"><endtime><xsl:value-of select="."/></endtime></xsl:template>
<xsl:template match="sessionname"><sessioname><xsl:value-of select="."/></sessioname></xsl:template>
<xsl:template match="sessiontype"><sessiontype><xsl:value-of select="."/> </sessiontype> </xsl:template>
<xsl:template match="sessionID"><sessionID><xsl:value-of select="."/></sessionID> </xsl:template>
<xsl:template match="sessionDesc"><sessionDesc><xsl:value-of select="."/> </sessionDesc> </xsl:template>
</xsl:stylesheet>
发布于 2015-08-24 17:47:00
你可以用:
substring-before(starttime, ' ')
提取日期并:
substring-after(endtime, ' ')
抽空时间。
Note
在这种情况下,您希望保留大部分输入,并且只进行少量更改,使用标识转换模板作为规则,并添加其他模板作为例外是很方便的:
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="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="starttime">
<xsl:copy>
<xsl:value-of select="substring-before(., ' ')"/>
</xsl:copy>
</xsl:template>
<xsl:template match="endtime">
<xsl:copy>
<xsl:value-of select="substring-after(., ' ')"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
https://stackoverflow.com/questions/32188142
复制相似问题