仅当 div 标签没有直接子标签作为 p/ol/ul 标签时,才将其替换为 p 标签

Replace div tag with p tag only if it does not have direct childs as p/ol/ul tags

只有当 div 标签不包含直接子标签作为 p/ol/ul 标签并且它包含 p/ol/ul 标签作为标签时,我才需要用 p 标签替换 div 标签direct child 然后只需删除 div 标签并保持子标签不变。

示例:

 <div>
      <ul>
         <li>HIPAA Privacy Module Certificate</li>
      </ul>
  </div>
 <div>
      <p>
         HIPAA Privacy Module Certificate
      </p>
  </div>
 <div>
      <strong>
         <li>HIPAA Privacy Module Certificate</li>
      </strong>
  </div>

期望的输出:

  <ul>
      <li>HIPAA Privacy Module Certificate</li>
  </ul>
  <p>
     HIPAA Privacy Module Certificate
  </p>
 <p>
      <strong>
         <li>HIPAA Privacy Module Certificate</li>
      </strong>
  </p>

我正在尝试但没有奏效的方法:

    <xsl:template match="div[not(div)]">
        <p>
            <xsl:apply-templates/>
        </p>
    </xsl:template>
 <xsl:template match="ul[(parent::div)]">
            <ul>
                <xsl:apply-templates/>
            </ul>

    </xsl:template>


<xsl:template match="ol[(parent::div)]">
                <ol>
                    <xsl:apply-templates/>
                </ol>
    
        </xsl:template>
 <xsl:template match="p[(parent::div)]">
                <p>
                    <xsl:apply-templates/>
                </p>
    
        </xsl:template>

提前致谢。

对我来说这听起来像

<xsl:template match="div[p | ol | ul]">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="div[not(p | ol | ul)]">
  <p>
    <xsl:apply-templates/>
  </p>
</xsl:template>

连同恒等变换。