createProcessingInstruction() generates a new processing instruction node and returns it.

The new node usually will be inserted into an XML document in order to accomplish anything with it, such as with node.insertBefore.


piNode = document.createProcessingInstruction(target, data)


  • piNode is the resulting ProcessingInstruction node.
  • target is a string containing the first part of the processing instruction (i.e., <?target … ?>)
  • data is a string containing any information the processing instruction should carry, after the target. The data is up to you, but it can't contain ?>, since that closes the processing instruction.


Throws if either of the following are true:
  • The processing instruction target is invalid — it should be a valid XML name that doesn't contain "xml", "XML", or any case combination of the two, other than standardized ones such as <?xml-stylesheet ?>.
  • The closing processing instruction sequence (?>) is part of the data.


var doc = new DOMParser().parseFromString('<foo />', 'application/xml');
var pi = doc.createProcessingInstruction('xml-stylesheet', 'href="mycss.css" type="text/css"');

doc.insertBefore(pi, doc.firstChild);

console.log(new XMLSerializer().serializeToString(doc));
// Displays: <?xml-stylesheet href="mycss.css" type="text/css"?><foo/>


Specification Status Comment
The definition of 'createProcessingInstruction()' in that specification.
Living Standard No change
The definition of 'createProcessingInstruction()' in that specification.
Obsolete Added more explicit definition of how the data parameter is validated.
Document Object Model (DOM) Level 3 Core Specification
The definition of 'createProcessingInstruction()' in that specification.
Obsolete Added note that the namespace of the target name is not checked whether it is well-formed, defined what is considered an illegal character for the target name and specified the returned ProcessingInstruction object more precisely.
Document Object Model (DOM) Level 2 Core Specification
The definition of 'createProcessingInstruction()' in that specification.
Obsolete No change
Document Object Model (DOM) Level 1 Specification
The definition of 'createProcessingInstruction()' in that specification.
Obsolete Initial definition

Browser compatibility

Update compatibility data on GitHub
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
createProcessingInstructionChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 9Opera Full support ≤12.1Safari Full support YesWebView Android Full support YesChrome Android Full support 18Firefox Android Full support 4Opera Android Full support ≤12.1Safari iOS Full support YesSamsung Internet Android Full support Yes


Full support  
Full support