我正在尝试将以下XML转换为不同的xml格式。 我已经复制了我用于转换的XSLT文件,但是我收到了无效的架构错误。
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="InternalVendGroup.xslt"?>
<ns0:VendorGroup xmlns:ns0="http://InternalVendorGroup">
<Header>
<Fld1>VendGroup1</Fld1>
<Fld2>VendGroup Description</Fld2>
<MessageId>{5FC77A8F-67D2-4BF1-A671-FF5A81EF0DDC}</MessageId>
</Header>
</ns0:VendorGroup>
XSLT转换代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:InternalSO="http://InternalVendGroup">
<xsl:template match="InternalSO:AxdVendGroup">
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
<MessageId>
<xsl:value-of select="Header/MessageId"/>
</MessageId>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/VendVendGroupService/create</Action>
</Header>
<Body>
<MessageParts>
<AxdVendGroup xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/VendGroup">
<VendGroup class="entity">
<VendGroup>
<xsl:value-of select="Header/Fld1"/>
</VendGroup>
<Name>
<xsl:value-of select="Header/Fld2" />
</Name>
</VendGroup>
</AxdVendGroup>
</MessageParts>
</Body>
</Envelope>
</xsl:template>
</xsl:stylesheet>
转换后,我得到以下内容,这不是理想的结果。
<?xml version="1.0" encoding="utf-8"?>
VendGroup1
VendGroup Description
{5FC77A8F-67D2-4BF1-A671-FF5A81EF0DDC}
为什么在转换过程中缺少所有标签?
答案 0 :(得分:3)
为什么转换期间所有标签都丢失了?
因为您的模板与任何内容都不匹配。
<xsl:template match="InternalSO:AxdVendGroup">
它与任何东西都不匹配,因为:
AxdVendGroup
的元素;正确的名称是VendorGroup
; InternalSO:
前缀绑定到。{
"http://InternalVendGroup"
命名空间;但是使用的命名空间
您的XML输入是"http://InternalVendorGroup"
。尝试改为:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:InternalSO="http://InternalVendorGroup">
<xsl:template match="InternalSO:VendorGroup">
<!-- the rest of your template -->
</xsl:template>
</xsl:stylesheet>
警告:我没有检查过你模板的实际内容。