2009-12-28 67 views
6

Tôi vừa phát hiện ra vẻ đẹp của việc tạo lược đồ XSD tự động của Visual Studio. *Tự động đính kèm tệp XML vào lược đồ XSD trong Visual Studio?

Có cách nào dễ dàng để VS tự động đính kèm tệp với tên cụ thể vào lược đồ XSD hiện có không? Vì vậy, nếu tôi có các tệp myconfig.xml nằm rải rác trong suốt một dự án (hoặc một số dự án), tôi muốn chúng luôn hợp lệ hóa với myconfig.xsd, thay vì phải mở từng tệp XML và liên kết nó theo cách thủ công. Điều này có thể không?

* Đối với những người không quen thuộc: file Open XML, XML/Tạo Schema, và nó tạo ra một tập tin schema tốt đẹp dựa trên những gì nó thấy trong tập tin XML của bạn. Bạn có thể sau đó đính kèm cùng một XSD với một tệp XML khác bằng cách mở tệp đó và chọn XML/Schemas và chọn giản đồ thích hợp từ dự án của bạn. Sau đó bạn nhận được IntelliSense và xác nhận trên tất cả các yếu tố của bạn và tên, yếu tố cần thiết và các thuộc tính thuộc tính vv


Cập nhật: Tôi nghĩ rằng tôi đã không thực sự rõ ràng.

Khi tôi tạo tệp web.config mới ở bất kỳ đâu trong dự án, tôi không gán một lược đồ theo cách thủ công cho nó. Không có không gian tên được chỉ định trong XML. Tuy nhiên Visual Studio tự động biết sử dụng DotNetConfig.xsd:

XML Schemas dialog screenshot http://i46.tinypic.com/xarpfn.png

lẽ Visual Studio có một ánh xạ một nơi nào đó gán tập tin có tên web.config-DotNetConfig.xsd.

Bây giờ, giả sử tôi muốn tất cả các tệp có tên DbSchema.xml để tự động sử dụng lược đồ tôi đã tạo được gọi là DbSchema.xsd. Có cách nào làm được việc này không?

+0

Bạn có bao giờ con số này ra? Nếu vậy xin vui lòng chia sẻ. –

Trả lời

5

Nếu schemas bạn đang ở trong không gian làm việc tương tự (không nhất thiết dự án) dưới dạng file XML của bạn, Visual Studio sẽ tự động sử dụng chúng cho tự động hoàn tất và xác nhận, miễn là tập tin của bạn có một khai báo không gian tên.

Bạn thậm chí không cần đặt thuộc tính schemaLocation.

Hãy thử như sau:

  • đúp chuột lên tập tin XML để mở nó
  • Trong mục menu "XML" mà bây giờ xuất hiện tự động, bấm vào nút "Schemas ...". Điều này sẽ hiển thị cho bạn ánh xạ hiện tại từ các không gian tên tới các lược đồ.

Để kiểm tra xem nó có hoạt động hay không, hãy thử đặt một góc mở ở đâu đó, nó nên đề xuất tên phần tử.

Chỉnh sửa: điều này cũng sẽ hoạt động với tệp XML không có không gian tên, nhưng bạn có thể phải thêm danh mục lược đồ mới vào% Install% \ Xml \ Schemas, as described here. Gần phía dưới, nó mô tả cách sử dụng phần tử "Hiệp hội" để liên kết các lược đồ bằng phần mở rộng.

+0

Vui lòng xem phần cập nhật ở trên để biết rõ. –

+0

Đã thêm một số giải thích khác trong phần "chỉnh sửa". – xcut

+0

Đó là liên kết tôi đang tìm kiếm, cảm ơn! –

1

khi sử dụng, thêm namespace như http //...../ xxx.xsd hoặc ../Common/xxx.xsd dễ dàng để

<configuration> 

    <configSections> 
    <section name="RouteConfigSection" type="RouteSection.RouteConfigSection,RouteSection" /> 
    </configSections> 

    <RouteConfigSection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="RouteConfigSection.xsd"> 
    <routes>... 

Trong khi đó:

public class RouteConfigSection : ConfigurationSection 
{ 
    [ConfigurationProperty("routes", IsDefaultCollection = false)] 
    public RouteConfigElementCollection Routings { get { return (RouteConfigElementCollection)base["routes"]; } } 

    //https://github.com/bspell1/NLogEx/blob/master/NLogEx.Mvc/Config/Config.cs 
    [ConfigurationProperty("xmlns")] 
    private String Ns1 { get { return null; } } 

    [ConfigurationProperty("xmlns:xsi")] 
    private String Ns2 { get { return null; } } 

    [ConfigurationProperty("xsi:noNamespaceSchemaLocation")] 
    private String Ns3 { get { return null; } } 
} 
Các vấn đề liên quan