首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对P标记上的HTML文件进行xdt转换失败

对P标记上的HTML文件进行xdt转换失败
EN

Stack Overflow用户
提问于 2012-07-02 10:11:37
回答 1查看 1.1K关注 0票数 2

我正在尝试将转换应用到HTML文件。对于div和span,转换是正确的,但是一旦我插入一个P标记,它就会失败。

我正在转换的HTML文件是:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
  <head>
    <title>STREAM Interactive - UAT</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  </head>
    <body>
          <p>my para</p>
    </body>
</html>

转换文件非常简单:

代码语言:javascript
复制
<html xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
   <head>
     <title xdt:Transform="Replace">TITLEHEADINGHERE</title>
   </head>  

</html>

用于进行转换的项目文件是:

代码语言:javascript
复制
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml" AssemblyFile="C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.Dll"/>

    <PropertyGroup>
        <SourceFile>web.config</SourceFile>
        <TransformFile>web.debug.config</TransformFile>
        <OutputFile>final.config</OutputFile>
    </PropertyGroup>

    <Target Name="GenerateConfigs">
        <Message Text="Beginning Transformation." />
        <Message Text="$(SourceFile)" />
        <TransformXml Source="$(SourceFile)" Transform="$(TransformFile)" Destination="$(OutputFile)" />
        <Message Text="Completed Transformation." />
    </Target>

</Project>

使用的命令是:

代码语言:javascript
复制
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe D:\SAM\SAMSite\bin\msbuild-transform-Template.xml /p:SourceFile="C:\temp\buildTest\BlueZone\2.3.10.5\PublishedClickOnce\index.html" /p:TransformFile="D:\SAM\SAMSite\bin\TransformTemplates\clickonce.index.transform.temp" /p:OutputFile="C:\temp\buildTest\BlueZone\2.3.10.5\PublishedClickOnce\index.html.temp"

我得到的输出/错误是:

代码语言:javascript
复制
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.269]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 02/07/2012 10:54:33.
Project "D:\SAM\SAMSite\bin\msbuild-    transform-Template.xml" on node 1 (default targets).
GenerateConfigs:
  Beginning Transformation.
  C:\temp\buildTest\BlueZone\2.3.10.5\PublishedClickOnce\index.html
  Transforming Source File:     C:\temp\buildTest\BlueZone\2.3.10.5\PublishedClickOnce\index.html
  Transformation succeeded
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018: The "TransformXml" task failed unexpectedly.
D:\SAM\SAMSite\bin\msbuild-transform-    Template.xml(13,3): error MSB4018: System.UriFormatException: Invalid URI: The URI is empty.
D:\SAM\SAMSite\bin\msbuild-transform-    Template.xml(13,3): error MSB4018:    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at Microsoft.Web.Publishing.Tasks.TransformXml.Execute()
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)
Done Building Project "D:\SAM\SAMSite\bin\msbuild-transform-Template.xml" (default targets) -- FAILED.

Build FAILED.

"D:\SAM\SAMSite\bin\msbuild-transform-Template.xml" (default target) (1) ->
(GenerateConfigs target) -> 
  D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018: The "TransformXml" task failed unexpectedly.
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018: System.UriFormatException: Invalid URI: The URI is empty.
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at Microsoft.Web.Publishing.Tasks.TransformXml.Execute()
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
D:\SAM\SAMSite\bin\msbuild-transform-Template.xml(13,3): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.09

HTML已经被简化到了最不可能的程度,以前已经有了div's和span。有趣的是,如果我给P标签一个类,它就能工作。

我不知道为什么会这样。

编辑

根据@Kieren的建议,我尝试直接使用TransformXml运行。我又犯了一个错误:

代码语言:javascript
复制
Data at the root level is invalid. Line 1, position 1.

   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlTextReader.Read()
   at Microsoft.Web.Publishing.Tasks.XmlAttributePreservationDict.ReadPreservationInfo(String elementStartTag)
   at Microsoft.Web.Publishing.Tasks.XmlAttributePreservationProvider.GetDictAtPosition(Int32 lineNumber, Int32 linePosition)
   at Microsoft.Web.Publishing.Tasks.XmlFileInfoDocument.XmlFileInfoElement..ctor(String prefix, String localName, String namespaceUri, XmlFileInfoDocument document)
   at Microsoft.Web.Publishing.Tasks.XmlFileInfoDocument.CreateElement(String prefix, String localName, String namespaceURI)
   at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
   at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at Microsoft.Web.Publishing.Tasks.XmlFileInfoDocument.LoadFromTextReader(TextReader textReader)
   at Microsoft.Web.Publishing.Tasks.XmlFileInfoDocument.LoadFromFileName(String     filename)
   at Microsoft.Web.Publishing.Tasks.XmlFileInfoDocument.Load(String filename)
   at QuickTests.TestTransformXml.OpenSourceFile(String sourceFile) in C:\Users\jon\Documents\Visual Studio 2010\Projects\QuickTests\QuickTests\TestTransformXmlTask.cs:line 140
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-01 09:35:25

根据我提交的错误报告,这个问题现在已经解决了。假设它将包含在MsBuild的下一个版本中,(不知道什么时候会包含):

https://connect.microsoft.com/VisualStudio/feedback/details/752279/msbuild-tansform-failure-for-elements-with-only-one-character

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11291623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档