У меня есть исходный XML, как указано ниже ...
<?xml version="1.0" encoding="UTF-8"?><tns:DATA xmlns:soap-env="*****" xmlns:tns="****" xmlns:nxsd="*****"><tns:Information><tns:tenantId>PARENT_STRING1</tns:tenantId><tns:userSessionId>PARENT_STRING2</tns:userSessionId><tns:startTime>PARENT_STRING3</tns:startTime><tns:endTime>PARENT_STRING4</tns:endTime><tns:duration>PARENT_STRING5</tns:duration><tns:userActions><tns:name>CHILD_STRING1</tns:name><tns:domain>CHILD_STRING2</tns:domain> <tns:targetUrl>CHILD_STRING3</tns:targetUrl><tns:type>CHILD_STRING4</tns:type>... etc</tns:userActions>....etc</tns:Information></tns:DATA>
И я хочу преобразовать это в
<?xml version="1.0" encoding="UTF-8"?><tns:DATA xmlns:soap-env="*****" xmlns:tns="****" xmlns:nxsd="*****"><tns:Information><tns:tenantId>PARENT_STRING1</tns:tenantId><tns:userSessionId>PARENT_STRING2</tns:userSessionId><tns:startTime>PARENT_STRING3</tns:startTime><tns:endTime>PARENT_STRING4</tns:endTime><tns:duration>PARENT_STRING5</tns:duration><tns:userActions><tns:userSessionId>PARENT_STRING2</tns:userSessionId><tns:startTime>PARENT_STRING3</tns:startTime><tns:endTime>PARENT_STRING4</tns:endTime><tns:duration>PARENT_STRING5</tns:duration><tns:name>CHILD_STRING1</tns:name><tns:domain>CHILD_STRING2</tns:domain><tns:targetUrl>CHILD_STRING3</tns:targetUrl><tns:type>CHILD_STRING4</tns:type>... etc</tns:userActions>....etc</tns:Information></tns:DATA>
Я использую XSLT, как указано ниже,
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tns="http://www.esa.int/tns/sentinel-1.0">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tns:Information">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="tns:userActions">
<tns:userActions>
<tns:tenantId><xsl:value-of select="../tns:tenantId"/></tns:tenantId>
<tns:ParentStartTime><xsl:value-of select="../tns:startTime"/></tns:ParentStartTime>
<tns:ParentEndTime><xsl:value-of select="../tns:endTime"/></tns:ParentEndTime>
<xsl:apply-templates select="@*|node()"/>
</tns:userActions>
</xsl:template>
XSLT не работает, а XML не конвертируется в мой ожидаемый формат.Подскажите, пожалуйста, что мне здесь не хватает ... ???
Большое спасибо.!
Моя часть кода VBA, чтобы сделать то же самое, упомянута ниже,
' LOAD XML SOURCE
'xmlDoc.Load strPath & strFile
xmlDoc.Load strPath & strFile
If (xmlDoc.parseError.errorCode <> 0) Then
MsgBox ("Error loading source document: " & xmlDoc.parseError.reason)
Exit Sub
Else
If (xslDoc.parseError.errorCode <> 0) Then
MsgBox ("Error loading stylesheet document: " & xslDoc.parseError.reason)
Exit Sub
Else
' Do the transform.
xmlDoc.transformNodeToObject xslDoc, newDoc
newDoc.Save "C:\temp\temp.xml"
Application.ImportXML "C:\temp\temp.xml", acAppendData
strFile = Dir()
End If
End If
' TRANSFORM SOURCE
'xmlDoc.transformNodeToObject xslDoc, newDoc
'newDoc.Save "C:\temp\temp.xml"
' APPEND TO TABLES
' Application.ImportXML "C:\temp\temp.xml", acAppendData
' strFile = Dir()