0
我有這樣的XSLT刪除時間戳&轉換屬性轉換成元素:XSLT從所有元素中刪除時間戳,除了一個
<xsl:stylesheet version="1.0" xmlns="namespace" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@*]">
<xsl:choose>
<xsl:when test="text() and @*">
<xsl:copy>
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()"/>
</xsl:element>
<xsl:apply-templates select="@*"/>
</xsl:copy>
</xsl:when>
<xsl:when test="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="//*[contains(name(), 'Date') and not(ancestor-or-self::EventDate)]">
<xsl:element name="{local-name()}">
<xsl:value-of select="substring(.,1,10)"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
&我的源XML看起來是這樣的:
<?xml version="1.0" encoding="ISO-8859-1" standalone='yes'?>
<CaseEvent xmlns="namespace">
<TransactionInfo>
<EventDate>2016-06-02T02:07:30.000-04:00</EventDate>
<CaseID>872519</CaseID>
</TransactionInfo>
<NewCaseEvent>
<Case changeType="I">
<Plan changeType="I">
<Provision>
<ProvisionTextValue>70</ProvisionTextValue>
<EffectiveDate>2016-01-01-05:00</EffectiveDate>
</Provision>
</Plan>
<BillGroup changeType="I">
<BillGroupIdentifierDate>2016-01-01-05:00</BillGroupIdentifierDate>
</BillGroup>
</Case>
</NewCaseEvent>
</CaseEvent>
我想從以外的所有日期元素中移除時間戳事件日期
預期輸出:
<CaseEvent xmlns="namespace">
<TransactionInfo>
<EventDate>2016-06-02T02:07:30.000-04:00</EventDate>
<CaseID>872519</CaseID>
</TransactionInfo>
<NewCaseEvent>
<Case changeType="I">
<Plan changeType="I">
<Provision>
<ProvisionTextValue>70</ProvisionTextValue>
<EffectiveDate>2016-01-01</EffectiveDate>
</Provision>
</Plan>
<BillGroup changeType="I">
<BillGroupIdentifierDate>2016-01-01</BillGroupIdentifierDate>
</BillGroup>
</Case>
</NewCaseEvent>
</CaseEvent>
如果我從源XML命名空間中刪除,這XSL工作正常,但如果命名空間被添加則沒有產生預期的結果。 感謝這方面的幫助!
嗨Stefan,感謝您的回覆,但我沒有在我的xml中使用前綴。我試着根據你的建議改變XSLT中的命名空間聲明&** name()**,但是我沒有看到輸出的任何改變。 –
我看到了,請檢查我的編輯請 –
它的工作完美。非常感謝 ! –