Xml 需要了解XSLT方法和标记的功能

Xml 需要了解XSLT方法和标记的功能,xml,xslt,xml-parsing,transform,Xml,Xslt,Xml Parsing,Transform,我试图在使用XSLT转换XML时添加名称空间前缀。起初我试着,但在理解这一点时遇到了一些麻烦。我有以下问题: -它的用途是什么。据我所知,这是用来复制元素的。它是只复制根元素还是同时复制以下子元素 -我不确定此过程如何工作,如何使用select属性节点()它的用途是什么?该符号还包括@*符号。我假设|符号用于OR。如果没有,请引导我 -根据我的理解,元素标记用于在XML中添加节点(元素)。这里我又一次被name()方法弄糊涂了。它是用来干什么的?我们可以只使用元素名而不是它吗?名称空间属性是必需

我试图在使用XSLT转换XML时添加名称空间前缀。起初我试着
,但在理解这一点时遇到了一些麻烦。我有以下问题:

  • -它的用途是什么。据我所知,这是用来复制元素的。它是只复制根元素还是同时复制以下子元素
  • -我不确定此过程如何工作,如何使用select属性<代码>节点()
  • 它的用途是什么?该符号还包括
    @*
    符号。我假设
    |
    符号用于OR。如果没有,请引导我
  • -根据我的理解,元素标记用于在XML中添加节点(元素)。这里我又一次被
    name()
    方法弄糊涂了。它是用来干什么的?我们可以只使用元素名而不是它吗?名称空间属性是必需的吗?请确认
  • 对此一无所知。请告诉我为什么我们只是使用这个或必要的
  • 欢迎提出意见和建议


    谢谢

    您引用的解决方案是一个修改过的解决方案,它匹配XML节点,将模板应用于文档中的每个属性和节点,并将它们简单地复制到输出中

    除非有更具体的模板可用,否则标识模板将匹配、复制上下文节点,然后将模板应用于匹配项的任何属性或子节点()

  • copy元素提供了一种复制当前节点的简单方法。 实例化
    xsl:copy
    元素将创建当前节点的副本。 当前节点的命名空间节点将自动复制为 但是节点的属性和子节点不是 自动复制。
    xsl:copy
    元素的内容是 已创建节点的属性和子级的模板;这个 仅为具有以下类型的节点实例化内容: 属性或子级(即根节点和元素节点)

  • -从上下文节点选择任何属性或子节点并应用模板,从样式表中定义的模板中查找最特定的匹配项

    • |
      是并集运算符。它的行为有点像OR,也有点像and,这取决于你对它的看法。如果操作符的左侧或右侧存在重复节点,则结果将是删除重复项的唯一项目列表
    • @*
      将选择附加到上下文节点的任何属性
    • node()
      将选择作为上下文元素子元素的任何元素、文本节点、处理指令或注释。等价的表达式是
      *| text()| processing-instruction()| comment()
  • xsl:element
    元素允许使用 计算名称。要创建的元素的扩展名称为 由必需的名称属性和可选命名空间指定 属性
    xsl:element
    元素的内容是 所创建元素的属性和子元素

    名称属性被解释为属性值模板。信息技术 如果实例化 属性值模板不是QName。XSLT处理器可能会发出信号 误差;如果没有发出错误信号,则必须通过 使实例化
    xsl:element
    元素的结果成为 通过实例化
    xsl:element
    element,不包括任何初始属性节点。如果 命名空间属性不存在,则QName将扩展为 使用对
    xsl:element
    元素,包括任何默认名称空间声明

    如果名称空间属性存在,那么它也被解释为 属性值模板。从中生成的字符串 实例化属性值模板应该是URI引用。 如果字符串不是语法合法的URI,则不是错误 参考资料。如果字符串为空,则为 元素具有空命名空间URI。否则,该字符串将用作 要创建的元素的扩展名称的命名空间URI。这个 name属性指定的QName的本地部分用作 要创建的元素的展开名称的本地部分

    • 用于获取上下文节点(正在转换的节点)的名称。它的“基本名称”与名称空间前缀连接,该前缀将绑定到
      @namespace
      属性中声明的名称空间。模板可以(也可能应该)使用,它将是不带名称空间前缀的元素的“基本”名称。由于正在转换的源文档没有任何名称空间前缀,
      name()
      local-name()
      将返回相同的值
    • 对于几乎每一个XSLT处理器(我没有遇到一个不这样做的处理器),如果名称空间已经在XSLT中声明,并且您在元素名构造函数中使用了它的名称空间前缀,那么您不必使用
      @namespace
      属性显式声明名称空间。XSLT处理器将元素绑定到与样式表中声明的名称空间前缀匹配的名称空间
    XSLT处理器可以使用中指定的QName前缀 选择用于输出数据的前缀时的name属性 创建元素为XML;但是,他们不必这样做

  • -这会显式复制上下文节点上的所有命名空间节点。