Я пытаюсь создать новый XML-файл из существующего, используя XSL. При записи нового файла я хочу замаскировать данные, появляющиеся в поле имени учетной записи.
Вот так выглядит мой XML:
<?xml version="1.0" encoding="UTF-8"?>
<Sumit>
<AccountName>Sumit</AccountName>
<CCT_datasetT id="Table">
<row>
<CCTTitle2>Title</CCTTitle2>
</row>
</CCT_datasetT>
</Sumit>
Вот мой код XSL:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute namespace="{namespace-uri()}" name="{name()}"/>
</xsl:template>
<xsl:template match="AccountName">
<AccountName>acc_no</AccountName>
</xsl:template>
</xsl:stylesheet>
Когда я применяю код XSL к своему XML, я получаю следующий вывод:
<?xml version="1.0" encoding="UTF-16"?>
<Sumit>
<AccountName>acc_no</AccountName>
<CCT_datasetT id="">
<row>
<CCTTitle2>Title</CCTTitle2>
</row>
</CCT_datasetT>
</Sumit>
со следующими проблемами:
1) Создает вывод, используя кодировку UTF-16
2) Вывод второй строки:
<CCT_datasetT id="">
Значение атрибута (Таблица) отсутствует.
Может кто-нибудь сказать, пожалуйста, как мне избавиться от этих двух проблем. Большое спасибо.
@ Эван Ленц:
Вот код JavaScript:
var oArgs = WScript.Arguments;
if (oArgs.length == 0)
{
WScript.Echo ("Usage : cscript xslt.js xml xsl");
WScript.Quit();
}
xmlFile = oArgs(0) + ".xml";
xslFile = oArgs(1) + ".xsl";
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load(xmlFile)
// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(xslFile)
// Transform
var msg = xml.transformNode(xsl)
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Open the text file at the specified location with write mode
var txtFile = fso.OpenTextFile("Output.xml", 2, false, 0);
txtFile.Write(msg);
txtFile.close();
Создает вывод в новом файле «Output.xml», но я не знаю, почему кодировка меняется. Меня это больше беспокоит по следующей причине:
Мой входной XML со следующим кодом:
<Status></Status>
И на выходе это выглядит как
<Status>
</Section>
Введен возврат каретки для всех пустых тегов. Я не уверен, имеет ли это отношение к кодировке. Пожалуйста, предложите.
Большое спасибо.