XSLT при переписывании моего app.conifg экранирует некоторые из двойных кавычек - PullRequest
0 голосов
/ 14 февраля 2012

Мы используем Xslt для преобразования наших app.configs для другого уровня развертывания (qa, prod и т. Д.)

вывод этого первого прохода правильный:

<add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" connectionUsername="XXXXX" connectionPassword="XXXXXXX" attributeMapUsername="SAMAccountName" />

сейчас я пишу инструмент для CM, чтобы поменять все пароли и учетные записи (которые нам, разработчикам, не разрешено знать), запустив secodn pass fo xlst (непосредственно из .Net 4)

но это вывод с НЕКОТОРЫМИ двойными кавычками (но не с другими ...)

<add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot; connectionStringName=&quot;ADConnectionString&quot; connectionUsername=&quot;NewAdMemberUser&quot; connectionPassword=&quot;NewAdMemberPass&quot; attributeMapUsername=&quot;SAMAccountName" connectionStringName="ADConnectionString" connectionUsername="XXXXX" connectionPassword="XXXXXX" attributeMapUsername="SAMAccountName" />

Я попытался уменьшить XSLT, чтобы упростить проблему, даже удалив строки, которые касаются поставщика, и он по-прежнему выводится по-другому.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:exsl="http://exslt.org/common"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                exclude-result-prefixes="msxsl xs exsl"
>
  <xsl:output method="xml" indent="yes"/>


  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>


  <xsl:template match="@*|*|text()">
    <xsl:copy>
      <xsl:apply-templates select="@*|*|text()"/>
    </xsl:copy>
  </xsl:template>

  <!--Fix AdMembership Provider login-->

  <xsl:template match="/configuration/system.web/membership/providers/add[@name='MyADMembershipProvider']/@connectionUsername" >
    <xsl:attribute  name="connectionUsername">
      <xsl:text  disable-output-escaping= "yes" >NewAdMemberUser</xsl:text>
    </xsl:attribute>
  </xsl:template>


    <!--remove blank lines leaving blank spaces--> 
  <xsl:strip-space elements="*" />
</xsl:stylesheet>

Так, что я делаю, чтобы вызвать поведение? они оба используют .Net XML методы преобразования. Почему меняются только НЕКОТОРЫЕ в двойных кавычках, когда эта строка выводится.

Интересует новая информация.

Используя инструмент, который я написал для запуска .Net4 Transforms, мой входной файл prod вызывает проблему, а мой входной файл QA - нет. Я сделал Comaison бок о бок и не вижу ничего отличного, что не закомментировано в Prod ... странный Спасибо,

кальцит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...