提问人:PhDJ 提问时间:2/9/2018 更新时间:2/9/2018 访问量:570
<ext: 在 XSLT 中有什么作用?
What does <ext: do in XSLT?
问:
不熟悉 XSLT,无法使用 Google 找到答案。
我需要基于现有的 XSLT 编写一个新的 XSLT,在该 XSLT 中,他们使用 < ext: 根据我的理解在生成的 XML 中添加新标签。
我在哪里可以找到对此的解释?
这是好的做法吗?
这是 XSLT 的一部分:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ax="http://schemas.microsoft.com/dynamics/2008/01/documents/Message" xmlns:purchaserequisition="http://schemas.microsoft.com/dynamics/2008/01/documents/PurchaseRequisition" xmlns:ext="IgepaFormat" version="1.0" exclude-result-prefixes="ext ax purchaserequisition">
<xsl:output method="xml" encoding="ISO-8859-1" version="1.0" standalone="yes" indent="yes" omit-xml-declaration="no" />
<xsl:namespace-alias stylesheet-prefix="ext" result-prefix="#default" />
<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:template match="ax:Envelope">
<xsl:for-each select="ax:Body/ax:MessageParts/purchaserequisition:PurchaseRequisition">
<ext:ORDERS>
<ext:Envelop>
<ext:RecordType>ENV</ext:RecordType>
<ext:OrderHeader>
<ext:OrderNumber>
<ext:BuyerOrderNumber>
<xsl:value-of select="purchaserequisition:VendPurchOrderJour/purchaserequisition:PurchId" />
</ext:BuyerOrderNumber>
<ext:ListOfMessageID>
<ext:MessageID>
<ext:IDNumber>
<xsl:value-of select="purchaserequisition:VendPurchOrderJour/purchaserequisition:PurchId" />
</ext:IDNumber>
<ext:IDAssignedBy>
<IDAssignedByCoded>1</IDAssignedByCoded>
</ext:IDAssignedBy>
</ext:MessageID>
</ext:ListOfMessageID>
</ext:OrderNumber>
答:
2赞
Tim C
2/9/2018
#1
您需要阅读 XML“命名空间”
ext:
是命名空间前缀。如果你查看样式表的第一行,你应该看到这个声明
xmlns:ext="IgepaFormat"
因此,元素表示 ORDERS 元素属于命名空间“IgepaFormat”。请注意,在这种情况下,前缀“ext”是任意的。重要的是命名空间 URI。<ext:ORDERS>
这并不是一个关于命名空间的良好实践问题。如果您输出的 XML 需要它们,则使用它们(例如,使用您生成的 XML 的应用程序要求元素位于特定命名空间中)
这是一个潜在的链接,你可以在以下位置阅读它们:https://www.xml.com/pub/a/1999/01/namespaces.html
评论
1赞
Michael Kay
2/9/2018
我认为你错过了这个样式表的一个非常不寻常的功能:它使用指令。这意味着实际上不是在命名空间“IgepaFormat”中创建元素,而是在命名空间“#default”中创建元素,在这种情况下,它不是命名空间。我不知道样式表为什么要这样做;这可能是因为作者认为通过更改一行代码来切换到不同的输出命名空间会很有用。xsl:namespace-alias
<ext:zzzz>
评论