@@ -312,8 +312,10 @@ export default class Serializser {
312312 if ( requireWellFormed && ! this . validatePIData ( node . data ) )
313313 throw new Error ( node . data + ' contains invalid processing instruction character values' ) ;
314314
315+ let target = this . preserveWhiteSpace ? node . target : node . target . trim ( ) ,
316+ data = this . preserveWhiteSpace ? node . data : node . data . trim ( ) ;
315317 //STEP 4
316- let markup = `<?${ node . target } ${ node . data } ?>` ;
318+ let markup = `<?${ target } ${ data } ?>` ;
317319
318320 //STEP 4
319321 return markup ;
@@ -337,24 +339,26 @@ export default class Serializser {
337339 throw new Error ( docType . systemId + ' contains invalid xml document systemId character value' ) ;
338340
339341 //STEP 3, 4, 5
340- let markup = '<!DOCTYPE ' ;
342+ let markup = '<!DOCTYPE ' ,
343+ publicId = this . preserveWhiteSpace ? docType . publicId : docType . publicId . trim ( ) ,
344+ systemId = this . preserveWhiteSpace ? docType . systemId : docType . systemId . trim ( ) ;
341345
342- if ( docType . publicId === '' && docType . systemId === '' && / ^ h t m l $ / i. test ( docType . name ) )
346+ if ( publicId === '' && systemId === '' && / ^ h t m l $ / i. test ( docType . name ) )
343347 markup += docType . name . toLowerCase ( ) ;
344348 else
345349 markup += docType . name ;
346350
347351 //STEP 7
348- if ( docType . publicId !== '' )
349- markup += ` PUBLIC "${ docType . publicId } "` ;
352+ if ( publicId !== '' )
353+ markup += ` PUBLIC "${ publicId } "` ;
350354
351355 //STEP 8
352- if ( docType . systemId !== '' && docType . publicId === '' )
356+ if ( systemId !== '' && publicId === '' )
353357 markup += ` SYSTEM` ;
354358
355359 //STEP 9
356- if ( docType . systemId !== '' )
357- markup += ` "${ docType . systemId } "` ;
360+ if ( systemId !== '' )
361+ markup += ` "${ systemId } "` ;
358362
359363 //STEP 10
360364 markup += '>' ;
0 commit comments