Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在xslt-1.0中使用SOH和ETX_Xml_Xslt_Xslt 1.0_Control Characters - Fatal编程技术网

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

Xml 如何在xslt-1.0中使用SOH和ETX,xml,xslt,xslt-1.0,control-characters,Xml,Xslt,Xslt 1.0,Control Characters,如何使用xslt-1.0设置SOH和ETX 我已经尝试了很多方法来达到输出,因为数字代码不接受这个xslt-1.0,这里的编码是utf-8 如何在其中使用这个十六进制代码…它不工作我需要做什么才能使它工作 SOH: ETX:和#03 我也尝试过下面的方法来实现结果输出,但不是…伙计们建议一些东西…不 <?xml version="1.0" encoding="US-ASCII" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.or

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

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

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

SOH:


ETX:
和#03

我也尝试过下面的方法来实现结果输出,但不是…伙计们建议一些东西…不

<?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}当前,双{urn:schemas microsoft com:xslt debug}位置,双{urn:schemas microsoft com:xslt debug}最后,ILST`1{urn schemas microsoft com:xslt DEBUBUG}名称空间

文件是用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>

正如您所见,字符写入输出时没有任何异常。

@Dimitre Novatchev我希望您了解上述ans,请帮助解决这个问题,这里我使用的是1.0版,编码utf-8,我无法使用“;”在xslt文件中,+1用于知道谁可能会回答这个问题:)@Ates Goral我看到过他与SOH打交道的一个网站,但这一点并不清楚,这就是为什么我这样说:),无论如何都要知道这方面的任何想法,如果你愿意,请建议me@StephenDenne你能帮我实现这个soh和etxthanks非常感谢回复,我尝试了你的输入,然后我收到了这个错误:找不到匹配的0参数函数名为{myScripts}soh()。您正在使用XslCompiledTransform吗?你能显示完整的堆栈跟踪吗?我从一个工作解决方案中复制了这一点。为了使myscripts启用true,我们需要指定xslcomiledtransform transform=new xslcomiledtransform(true);Load(strCID,新的XsltSettings(){EnableScript=true},null);可以吗?仍然需要对transform.transform(sampleCID.xml、xmlarglist、sw)进行任何修改;对您需要创建自己的编写器,并将writeSettings.CheckCharacters设置为false。否则,写入程序将在遇到0x01值时抛出,因为它不是有效的Xml字符。您需要克隆表单xslt以避免丢失设置。下面大致是它的样子:var writerSettigns=transform.OutputSettings.Clone();WriterSetSigns.CheckCharacters=false;使用(XmlWriter writer=XmlWriter.Create(strFileName,writerSettigns)){transform.transform(“sampleCID.xml”,xmlArgsList,writer);}即使您提供了StreamWriter,XslCompiledTransform类也将创建一个XmlWriter实例,以便能够序列化转换结果。“问题”是XslCompiledTransform创建的XmlWriter始终检查字符,不允许写入0x01。因此,您需要执行XslCompiledTransform所做的操作,但还需要禁用字符检查。克隆这些设置将确保您在isnstruction中输入的内容不会丢失。
var xslt = new XslCompiledTransform();
xslt.Load(@"C:\Temp\xsl.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 . . .