我需要转换以下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'未声明
答案 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并继续包括所有其他可用的信息)。