Показать сообщение отдельно
Старый 18.12.2013, 11:40   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
А можно вот так (в порядке тренировки навыков работы с XSLT):

X++:
static void ResearchXSLT(Args _args)
{
    #define.OldValue("value")
    #define.NewValue("NewValue")
    
    str fileName = "C:\\temp\\1.xml";  
   
    str xslt = strFmt('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">'+         
        '<xsl:template match="*|@*|text()">'+ 
        '<xsl:copy>'+
        '<xsl:apply-templates select="*|@*|text()"/>'+ 
        '</xsl:copy>'+
        '</xsl:template>'+        
        '<xsl:template match="@atribut[.=\'%1\']">' + 
        '<xsl:attribute name="atribut">%2</xsl:attribute> '+
        '</xsl:template>'+
        '</xsl:stylesheet>',
        #OldValue,
        #NewValue);
    str outXml = '';
   
    System.Xml.XmlReader                xslReader;
    System.Xml.XmlReader                xmlReader;
    System.Xml.XmlTextWriter            xmlWriter;
    
    System.IO.StringReader              stringReader;
    System.IO.StringWriter              stringWriter;
    System.Xml.Xsl.XslCompiledTransform xslTransform;   
    System.IO.StreamWriter              streamWriter;    
    ;    
    
    new InteropPermission(InteropKind::ClrInterop).assert();
    info(xslt);
    stringReader    = new System.IO.StringReader(xslt);
    xslReader       = System.Xml.XmlReader::Create(stringReader);
    xmlReader       = System.Xml.XmlReader::Create(fileName); 
        
    xslTransform    = new System.Xml.Xsl.XslCompiledTransform();        
    xslTransform.Load(xslReader);        
    
    stringWriter    = new System.IO.StringWriter();
    xmlWriter       = new System.Xml.XmlTextWriter(stringWriter);
    xslTransform.Transform(xmlReader, xmlWriter);
        
    xmlReader.Close();
    xmlWriter.Close();
    outXml = stringWriter.ToString();            
    streamWriter    = new System.IO.StreamWriter(fileName);
    streamWriter.Write(outXml);
    streamWriter.Close();
    
    CodeAccessPermission::revertAssert();
    
    info(outXml);        
}
__________________