如何在xslt-1.0中使用SOH和ETX



如何使用xslt-1.0 设置SOH和ETX

我已经尝试了很多方法来达到输出,因为数字代码不接受xslt-1.0,这里的编码是utf-8。

如何在其中使用这个十六进制代码。。。它不起作用我需要做什么才能使它起作用

SOH:

ETX:

我在下面尝试了这个,也是为了实现结果输出,但不是。。伙计们好心地建议。。。nah

<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:char="java.lang.Character" version="1.0">
<xsl:output method="text" encoding="US-ASCII" />
<xsl:template match="/">
    <xsl:value-of select="char:toString(1)"></xsl:value-of>
</xsl:template>
</xsl:stylesheet>

我已经在xslt中应用了上述逻辑,当我使用它时,它抛出了错误:

XmlQueryRuntime{urn:schemas-microsoft-com:xslt-debug}运行时,XPathNavigator{urn:schemas-microsoft-com:xslt-debug}当前,Double{urn/schemas-mmicrosoft-com:xslt debug}位置,Double

并且文件正在使用0KB 创建

<xsl:value-of select="char:toString(1)">

如果只是评论一下它运行得很好。。。

下面是xslt

<?xml version="1.0" encoding="us-ascii"?>

<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:char="java.lang.Character"  version="1.0" >

<xsl:output method="text" indent="no" omit-xml-declaration ="yes" encoding="us-ascii"/>
<xsl:param name="PackageId"  />
<xsl:param name="SequenceNum"  />

<xsl:template match="/">
    <xsl:value-of select="char:toString(1)"></xsl:value-of>             
        <xsl:apply-templates mode="block1" select="NewDataSet/Table1[CTC_PACKAGE_ID =$PackageId][position()=1]"/>       
        <xsl:apply-templates mode="block2" select="NewDataSet/Table[CTD_CTD_PKG_ID =$PackageId][CTD_SEQ_NUM =$SequenceNum]"/>   
</xsl:template>
  <xsl:template mode="block1" match="Table1">
    ...some code....        
</xsl:template>
 <xsl:template mode="block2" match="Table">
    ...some code....        
</xsl:template>

我不确定您有什么异常,因为您显示的内容似乎并不完整。0x01不是有效的Xml字符,这可能是导致异常的原因。我创建了一个与样式表略有不同的版本,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:myScripts="myScripts">
    <xsl:output method="text" indent="yes"/>
  <msxsl:script implements-prefix="myScripts" language="C#">
    public string SOH()
    {
      return 'u0001'.ToString();
    }
  </msxsl:script>
  <xsl:template match="/">
    <xsl:value-of select="myScripts:SOH()"></xsl:value-of>
  </xsl:template>
</xsl:stylesheet>

为了防止它因无效字符而失败,我需要在写入响应的写入程序中禁用字符检查:

var xslt = new XslCompiledTransform();
xslt.Load(@"C:Tempxsl.xsl", new XsltSettings() { EnableScript = true }, null);
var xml = new XPathDocument(new StringReader("<root/>"));
var writerSettigns = xslt.OutputSettings.Clone();
writerSettigns.CheckCharacters = false;
xslt.Transform(xml, XmlWriter.Create(Console.Out, writerSettigns));

是什么导致了以下输出:

☺Press any key to continue . . .

正如您所看到的,字符被写入输出时没有,也没有例外。

相关内容

  • 没有找到相关文章

最新更新