[xsl] How to remove outer tag if present in XSLT

Subject: [xsl] How to remove outer tag if present in XSLT
From: "Matt Van Voorhies mvanvoorhies@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 17 Mar 2023 16:55:31 -0000
               Hi folks,


                              I have a hopefully simple question that I was
unable to find a good answer for.  Im trying to convert some code we have
that manipulates an XML structure (transforming to HTML output) and move it
into the XSLT transform.


                              Problem:  Given a specific XML tag, I need to
remove the containing paragraph but only if its a single containing
paragraph tag.  Parsing using .NET Saxon 10.6 for transform.


                              So for example, if I have the following XML
structure 

                              <arbitrary-outer-tag-thats-valid>
                                    <p>Some content, probably a bunch of
internal tags like H1, H2, LI, DIV, etc.  </p>
                                    <p>More content, again, may have more
stuff in it like an <p>Internal paragraph</p></p>
                                    <p>stuff3</p>
                        </ arbitrary-outer-tag-thats-valid >

                        Running through the transform would produce:

                        <arbitrary-outer-tag-thats-valid>
                                    <p>Some content, probably a bunch of
internal tags like H1, H2, LI, DIV, etc.  </p>
                                    <p>More content, again, may have more
stuff in it like an <p>Internal paragraph</p></p>
                                    <p>stuff3</p>
                        </ arbitrary-outer-tag-thats-valid >

                        Since there is not an outer/containing paragraph tag.

                        However, if the input was 

                        <arbitrary-outer-tag-thats-valid>
<p>
                        <p>Some content, probably a bunch of internal tags
like H1, H2, LI, DIV, etc.  </p>
                        <p>More content, again, may have more stuff in it like
an <p>Internal paragraph</p></p>
                        <p>stuff3</p>
</p>
</ arbitrary-outer-tag-thats-valid >


               Running through the transform would produce:

               <arbitrary-outer-tag-thats-valid>
                                    <p>Some content, probably a bunch of
internal tags like H1, H2, LI, DIV, etc.  </p>
                                    <p>More content, again, may have more
stuff in it like an <p>Internal paragraph</p></p>
                                    <p>stuff3</p>
                        </ arbitrary-outer-tag-thats-valid >

            Where the single, containing <p> tag was removed, but everything
inside of it was retained exactly as it was.

            Could someone help?

            Thanks,
                        Matt Van Voorhies
                        mvanvoorhies@xxxxxxxxxxx

Current Thread