XSLT错误 - 未声明元素

时间:2015-06-26 17:45:39

标签: xslt

我需要转换以下xml

<NewNode2 xmlns:ns2="namespace2">
  <node3...>
  <node4...>
</NewNode2>

<?xml version="1.0" encoding="utf-16" ?>
<xsl:stylesheet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:ns1="namespace1"
                xmlns:ns2="namespace2">
  <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
  <xsl:template match="/">
    <xsl:apply-templates select="/" />
  </xsl:template>
  <xsl:template match="/" >
    <NewNode2>
      <xsl:copy-of select="//*[local-name()='node2']" />
    </NewNode2 >
  </xsl:template>
</xsl:stylesheet>

我使用这个XSLT

<form action="/laravel/project1/public/" method="post">

但是这会在视觉工作室中引发错误 - 输入验证错误 - 未声明元素'namespace1:node1' 和元素'namespace2:node2'未声明

1 个答案:

答案 0 :(得分:1)

您可以使用以下XSLT实现目标:

import fl.motion.AdjustColor;

var adjustColor:AdjustColor = new AdjustColor();
adjustColor.brightness = 50;
adjustColor.contrast = 50;
adjustColor.saturation = 50;
adjustColor.hue = 50;

var matrix:Array = adjustColor.CalculateFinalFlatArray();
var colorMatrix:ColorMatrixFilter = new ColorMatrixFilter(matrix);

yourMovieClip.filters = [colorMatrix];

<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="namespace1" xmlns:ns2="namespace2" xmlns="namespace2"> <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" /> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="@*|*"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="ns1:node1"> <xsl:apply-templates /> </xsl:template> <xsl:template match="ns2:node2"> <ns2:NewNode2> <xsl:apply-templates /> </ns2:NewNode2> </xsl:template> </xsl:stylesheet> 内的语句<xsl-templates select="/" />会导致无限循环,因为被叫&#39; root&#39;的匹配模板是模板本身,它调用根。

模板<xsl:stylesheet match="/">几乎属于所有样式表,因为它复制了未另行指定的所有元素的内容(最适用的选择规则)。

另外两个模板指定ns1的特定行为:node1(不输出此级别的任何信息,但继续所有其他级别的模板匹配过程)和ns2:node2(创建ns2:NewNode2并继续包括所有其他可用的信息)。