【问题标题】:XSD: XSL stylesheet child element warnings in Visual Studio 2010XSD:Visual Studio 2010 中的 XSL 样式表子元素警告
【发布时间】:2012-09-26 22:56:07
【问题描述】:

我为消息传递应用程序定义了一个 XSD。作为消息负载的一部分,我需要要求,对于我的元素之一,内容是 XSL 样式表。稍后将在应用 XSL 转换以生成最终格式化输出时使用它。请注意,XSL 样式表的有效负载是最终用户的决定,因此我不能简单地制作 XSD 来验证其内容。理想情况下,如果有 HTML 的 XSD 会很棒,因为我会简单地将它用作样式表中非 XSL 内容的命名空间!

因此,我这样做了(这只是 XSD 的一部分,但你明白了):

<?xml version="1.0" encoding="Windows-1252"?>
<xs:schema targetNamespace="http://schemas.mycorpname.com/notification"
           attributeFormDefault="unqualified" elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           xmlns="http://schemas.mycorpname.com/notification">

        <xs:import namespace="http://www.w3.org/1999/XSL/Transform" />
        <xs:complexType name="renderinginstructions">
            <xs:sequence>
                <xs:element ref="xsl:stylesheet"></xs:element>
            </xs:sequence>
        </xs:complexType>
</xs:schema>

这很好用,并强制消费者在 &lt;renderinginstructions&gt; 元素中包含 XSL 样式表。

大多数时候,XSL 样式表应该包含标签以输出有效的 HTML 文档。但是,当我将子元素放入样式表定义中时,我从 Visual Studio 收到此错误:

如果我想要求存在嵌入式 XSL 样式表(而不是任何其他内容!),我是否正确创建了我的 XSD?我还可以做些什么?我不喜欢这个警告。

以下是引发此警告的文档类型示例。

注意:在样式表中,如果我使用 xmlns="",我只会收到警告。如果我没有指定默认命名空间,我不会收到警告,但我会从 Visual Studio 收到一条“消息”,说明:

"找不到元素的架构信息 'http://schemas.mycorpname.com/notification:html'"。

所以,使用xmlns="",我会收到警告。没有它,我会得到大量的“消息”,所有这些都与 xsl:template 的子元素有关。 XSLT 的目的不就是能够在文档中放入大量不同的元素吗? XSLT 独立时是否不受模式验证的影响?

<?xml version="1.0"?>
<notification xmlns="http://schemas.mycorpname.com/notification">
    <renderinginstructions>
         <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="">
                    <xsl:template match="/">
                        <html>
                            <head>This is the head</head>
                            <body>This is the body.</body>
                        </html>
                    </xsl:template>
                </xsl:stylesheet>
    </renderinginstructions>
</notification>

【问题讨论】:

  • 棘手的一个..您是否尝试将 html 命名空间而不是 xmlns="" 放在您的 xsl:stylesheet 元素中?
  • 这是个好主意,我对此进行了研究,但找不到 HTML 的 XSD!如果你知道 URI,我一定会添加它并试一试!
  • &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; 我想你实际上可以通过在VS中创建一个新的html文档来找到它,默认情况下它可能会在顶部。
  • 这看起来像 XHTML 命名空间。这行得通吗?

标签: xml visual-studio-2010 xslt xsd


【解决方案1】:

只是为了更新这个:我最终只是处理了警告。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2011-04-11
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    相关资源
    最近更新 更多