我有这个原始的 xml:
<Document xmlns="http://schema.infor.com/InforOAGIS/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schema.infor.com/InforOAGIS/2 http://schema.infor.com/2.12.x/InforOAGIS/BODs/SyncCaptureDocument.xsd" releaseID="9.2" versionID="2.12.2">
<Application>
<Sender>
<LogicalID>lid://infor.daf.1</LogicalID>
<Code>OnError</Code>
</Sender>
<CreationDateTime>2021-06-10T23:07:36.193Z</CreationDateTime>
</Application>
</Document>
到目前为止我的 XSLT:
<?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"
xmlns:ns0="http://schema.infor.com/InforOAGIS/2 http://schema.infor.com/2.12.x/InforOAGIS/BODs/SyncCaptureDocument.xsd"
exclude-result-prefixes="#all"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:output method="xml" indent="yes" html-version="5"/>
<xsl:template match="/">
<Transaction xmlns="http://schema.infor.com/InforOAGIS/2"
languageCode="en-US"
releaseID="9.2"
systemEnvironmentCode="Production"
versionID="2.8.0">
<ApplicationArea>
<Sender>
<LogicalID>
<xsl:value-of select="ns0:Document/ns0:Application/ns0:Sender/ns0:LogicalID"/>
</LogicalID>
<Code>Add</Code>
</Sender>
<CreationDateTime>2021-06-10T23:07:36.193Z</CreationDateTime>
</ApplicationArea>
</Transaction>
</xsl:template>
</xsl:stylesheet>
我无法将 <LogicalID>
节点与上面的代码匹配。我认为这是因为命名空间。
任何帮助表示赞赏。链接到 xslt:https://xsltfiddle.liberty-development.net/eieFA13/1
答案 0 :(得分:0)
XSLT 中的命名空间声明是错误的,请参阅 https://xsltfiddle.liberty-development.net/eieFA13/2 中的修复以仅绑定命名空间名称(例如 xmlns:ns0="http://schema.infor.com/InforOAGIS/2"
)或 https://xsltfiddle.liberty-development.net/eieFA13/3 以通过使用 xpath-default 来简化任务-命名空间(例如 xpath-default-namespace="http://schema.infor.com/InforOAGIS/2"
)。
另一方面,这听起来更像是您想要更改 Sender/Code
元素:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xpath-default-namespace="http://schema.infor.com/InforOAGIS/2"
exclude-result-prefixes="#all"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Sender/Code">
<xsl:copy>Add</xsl:copy>
</xsl:template>
</xsl:stylesheet>