मैं Powershell .Net पद्धति का उपयोग करके एक XSL फ़ाइल के साथ XML फ़ाइल को रूपांतरित करने का प्रयास कर रहा हूं।

$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load("C:\Users\admin\Downloads\recoveryHistory_en.xsl")

मुझे नीचे त्रुटि संदेश मिलता है।

PSMessageDetails      :
Exception             : System.Management.Automation.MethodInvocationException: Exception calling "Load" with "1" argument(s): "XSLT compile error." ---> System.Xml.Xsl.XslLoadException: XSLT compile error. --->
                        System.Xml.XmlException: For security reasons DTD is prohibited in this XML document. To enable DTD processing set the DtdProcessing property on XmlReaderSettings to Parse and pass the settings into
                        XmlReader.Create method.
                           at System.Xml.XmlTextReaderImpl.Throw(Exception e)
                           at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
                           at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
                           at System.Xml.Xsl.Xslt.XsltInput.ReadTextNodes()
                           at System.Xml.Xsl.Xslt.XsltInput.ReadNextSibling()
                           at System.Xml.Xsl.Xslt.XsltInput.FindStylesheetElement()
                           at System.Xml.Xsl.Xslt.XsltLoader.LoadDocument()
                           at System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(XmlReader reader, Boolean include)
                           --- End of inner exception stack trace ---
                           at System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(XmlReader reader, Boolean include)
                           at System.Xml.Xsl.Xslt.XsltLoader.Load(Compiler compiler, Object stylesheet, XmlResolver xmlResolver)
                           at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
                           at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
                           at CallSite.Target(Closure , CallSite , Object , String )
                           --- End of inner exception stack trace ---
                           at System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationException(Exception exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo memberInfo)
                           at CallSite.Target(Closure , CallSite , Object , String )
                           at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
                           at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame frame)
                           at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
TargetObject          :
CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
FullyQualifiedErrorId : XslLoadException
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}

मैंने डीटीडीप्रोसेसिंग को पार्स करने के लिए सेट किया है क्योंकि त्रुटि इंगित की गई है, लेकिन अभी भी कोई भाग्य नहीं है।

[System.Xml.XmlReaderSettings]$xml=New-Object System.Xml.XmlReaderSettings
$xml.DtdProcessing = 'Parse'
$xml


Async                        : False
NameTable                    :
XmlResolver                  :
LineNumberOffset             : 0
LinePositionOffset           : 0
ConformanceLevel             : Document
CheckCharacters              : True
MaxCharactersInDocument      : 0
MaxCharactersFromEntities    : 0
IgnoreWhitespace             : False
IgnoreProcessingInstructions : False
IgnoreComments               : False
ProhibitDtd                  : False
DtdProcessing                : Parse
CloseInput                   : False
ValidationType               : None
ValidationFlags              : ProcessIdentityConstraints, AllowXmlAttributes
Schemas                      : System.Xml.Schema.XmlSchemaSet

मैंने इस फ़ोरम में मेरे जैसे बहुत सारे प्रश्न देखे हैं (xslt का उपयोग करके xml को html में बदलना< /a>, कैसे कर सकते हैं Xslt के साथ एक्सएमएल को एचटीएमएल में कनवर्ट करते समय मैं टैग आईडी बांधता हूं, PSCX Convert-XML का उपयोग करके XML को HTML में कनवर्ट करने के लिए सिंटैक्स क्या है?, एक्सएमएल को एचटीएमएल में बदलने के लिए पावरशेल का उपयोग करना)। मैंने उनमें से कुछ की कोशिश की (उदाहरण के लिए: कन्वर्ट-एक्सएमएल, एक्सएमएल फाइल सामग्री आदि को मान्य करना)। क्या किसी के पास कोई सुराग है कि त्रुटि संदेश के साथ क्या है और क्या गलत हो सकता है?

0
joso 18 पद 2020, 15:58
1
C# या VB या किसी अन्य .NET भाषा में आपको उन XmlReaderSettings के साथ एक XmlReader बनाना होगा और उस XmlReader को XslCompiledTransform उदाहरण की लोड विधि में पास करना होगा। XmlReader.Create("C:\Users\admin\Downloads\recoveryHistory_en.xsl", new XmlReaderSettings() { DtdProcessing = DtdProcessing.Parse }) जैसी स्थिर .NET पद्धति का उपयोग करने के लिए Powershell सिंटैक्स के बारे में निश्चित नहीं है।
 – 
Martin Honnen
18 पद 2020, 16:43

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि आपको की तर्ज पर प्रयास करने की आवश्यकता है

$xrs=New-Object System.Xml.XmlReaderSettings
$xrs.DtdProcessing = 'Parse'

$xr = [System.Xml.XmlReader]::Create("C:\Users\admin\Downloads\recoveryHistory_en.xsl", xrs)

$xslt.Load($xr)
0
Martin Honnen 18 पद 2020, 16:49
धन्यवाद, समाधान के करीब एक और कदम। एक XmlReader बनाना और उस XmlReader को XslCompiledTransform इंस्टेंस की लोड विधि में पास करना काम कर गया। लोड करते समय कोई और त्रुटि नहीं।
 – 
joso
18 पद 2020, 19:51